Typescript object物件類型、function函式規則
Annotations
- Parameter Type
定義傳入值類型
1 | function greet(name: string) { |
- Return Type
定義回傳值類型
1 | function age(): number { |
- Anonymous
1 | const names = ['Alice', 'Bob']; |
物件作為函式值
如果有部分property是optional,在property後方加上問號「?」
1 | function printName(obj: {first: string, last?: string}) { |
兼容不同資料類型(Union type)
以下範例可接受數值或字串的輸入。
1 | function printId(id: number | String) { |
Union type會遇到的問題
若方法沒辦法「都」應用到union所定義的資料類型,會顯示錯誤:
1 | function printId(id: number | String) { |
解決方法可以狹義資料類型,使用typeof:
1 | function printId(id: number | String) { |
類型別名(Type alias)
定義資料的類型並重複使用,舉例來說我們可以簡化例子中的obj:
1 | function printName(obj: {first: string, last?: string}) { |
Interaface
寫法和type alias相同。
interface和type alias的差別是,type alias不同被重新打開來增加新property,而interface可以一直extend。
類型斷言(type assertion)
告訴Typescript某個物件的資料類型,下方例子是斷言了value的類型是字串:
1 | let value: any = "a string"; |
參考文章:
https://www.typescriptlang.org/docs/handbook/2/everyday-types.html
https://www.typescriptlang.org/docs/handbook/2/functions.html