我們的作業中有這段代碼,我想知道它與手動輸入相同內容之間的區別。
const tuple = <T extends string[]>(...args: T) => args;
const strings = tuple(
'blabla',
'default',
'standard'
);
export type Strings = typeof strings[number];
當我將滑鼠懸停在“字串”上時,它基本上是type Strings = 'blabla' | 'default' | 'standard'
我的問題是,為什么不簡單地輸入相同的內容?
type Strings = 'blabla' | 'default' | 'standard';
而不是所有元組的東西?我看不出有什么區別,但如果有人能解釋為什么我們使用這個 Tuple 函式那就太好了
uj5u.com熱心網友回復:
如果不匯出strings,那么直接宣告型別肯定更好。在某些情況下,您還需要這些值,并且使用該tuple函式可以使您不必指定每個值兩次。
不過,有一種更簡單、更安全的方法可以做到這一點:
export const strings = [ 'blabla', 'default', 'standard' ] as const;
// type: readonly ["blabla", "default", "standard"]
export type Strings = typeof strings[number]
// type Strings = "blabla" | "default" | "standard"
這使得strings只讀,所以你不能做一個不健全strings.pop()的例子。
TypeScript 游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/445944.html
標籤:javascript 打字稿 元组
上一篇:<Interface>型別的引數不可分配給“從不”型別的引數
下一篇:是否可以在打字稿中跳過深度級別?
