TypeScript 正在使用結構型別,這很好,但我注意到它有時會在結構上沒有區別時抱怨。為什么會發生?這里發生了什么?
例子:
enum TagType {
SIMPLE = 'simple',
COLLECTOR = 'collector',
}
interface CollectorTag {
type: TagType.COLLECTOR,
}
const tag1_1: CollectorTag = {
type: TagType.COLLECTOR,
};
const tag1_2 = tag1_1;
const tag2_1 = {
type: TagType.COLLECTOR,
};
const tag2_2: CollectorTag = tag2_1;
^^^^^^
Error here
游樂場鏈接
uj5u.com熱心網友回復:
因為那些型別并不是真正兼容的tag2_1.tag可以是 any TagType,而tag1_1.tag是列舉的特定值TagType.COLLECTOR。
文字值型別存在于打字稿中,這意味著一個值可以充當一種型別,并且只有特定的值才能分配給這樣的文字值型別。它們通常對工會有用
使用as const也會使打字稿推斷 tag2_1.tag為文字型別
const tag2_1 = {
type: TagType.COLLECTOR,
} as const;
const tag2_2: CollectorTag = tag2_1;
游樂場鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/372383.html
下一篇:獲取redux的狀態型別
