[英]Unexpected behaviour with enum values as types (in Typescript)
我在理解枚舉成員的值可用於在Typescript中定義類型的方式時遇到了麻煩。
我了解在Typescript中,您可以通過將原始對象指定為類型值來定義一元類型。 枚舉成員具有與之關聯的數值。
在以下示例中,我將枚舉成員的值別名為類型newType
。 一切都有意義,除了在最后一行使用變量d
會發生什么。
const enum blah {
test = 1,
};
type newType = blah.test;
var a: newType = 'a'; // ERROR (Type '"a"' is not assignable to type 'blah'.)
var b: newType = blah.foo; // ERROR (Property 'foo' does not exist on type 'typeof blah'.)
var c: newType = blah.test; // WORKS
var d: newType = 123; // WORKS...???
最后的分配工作沒有錯誤。 有什么解釋嗎?
(原始示例來自我的同事@michaelkyriacou,當時他在討論Typescript中的一元類型。)
所有數字都可以分配給枚舉成員。 就像所有數字都可以分配給一個枚舉一樣。 例如
const enum blah {
test = 1,
foo = 2
};
const x: blah = 567; // allowed
原因是您要引用變量中的值。
實際上,您正在執行的操作是:
let x = 1 // type of x is number, not 1
type z = typeof x // the z is of type number.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.