1 số cú pháp cần nhớ
Union type | string | number;
Intersection Types &
Optional notation ?
Angle brackets: <>
Nullish coalescing operator: ??
Generic type
Decorators: @
Cài đặt
npm i -g typescript
npx tsc --init
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
let myname = "Harry" //Genenric const gener_1 = <T>(arr: Array<T>) => arr[0]; const gener_2 = <X, Y>(x: X, y: Y) => [x, y]; const gener_3 = <X, Y>(x: X, y: Y): [X, Y] => [x, y]; const gener_4 = <X, Y = number>(x: X, y: Y): [X, Y] => [x, y]; const run_gener_1 = gener_1([1, 2, 3]); const run_gener_2 = gener_2(123, "abc"); const run_gener_3 = gener_3(123, "abc"); const run_gener_31 = gener_3<number | boolean, string>(123, "abc"); const run_gener_4 = gener_4<string | null>("abc", 123); //Generic Extends const gener_5 = (obj: { firstName: string; lastName: string }) => ({ ...obj, fullname: `${obj.firstName} ${obj.lastName}` }) const gener_6 = <T extends { firstName: string; lastName: string }>(obj: T) => ({ ...obj, fullname: `${obj.firstName} ${obj.lastName}` }) const gener_7_error = (employee: object) => ({ ...employee, uid: Math.floor(Math.random() * 100), }) const gener_8_fix = <T>(employee: T) => ({ ...employee, uid: Math.floor(Math.random() * 100), }) const run_gener_5 = gener_5({ firstName: "John", lastName: "Parker" }); const run_gener_6 = gener_6({ firstName: "John", lastName: "Parker", age: 30 }); const run_gener_7 = gener_7_error({ firstName: "John", lastName: "Parker", age: 30 }); const run_gener_8 = gener_8_fix({ firstName: "John", lastName: "Parker", age: 30 }); //Generic Interface interface Resource<T> { uid: number, name: string, data: T, } type NumberResource = Resource<number[]> const res1: Resource<object> = { uid: 1, name: "Jack", data: { order: 2 } } const res2: Resource<string[]> = { uid: 1, name: "Jack", data: ["John", "Jack"] } const res3: NumberResource = { uid: 1, name: "Jack", data: [12, 34] } |