我很难理解枚举成员的值可用于在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,讨论的是关于打字稿的一元类型。)
答案 0 :(得分:1)
所有号码都可以分配给枚举成员。就像所有数字都可以分配给枚举一样。例如
const enum blah {
test = 1,
foo = 2
};
const x: blah = 567; // allowed
答案 1 :(得分:0)
原因是你指的是变量中的值。
你在做什么本质上是:
let x = 1 // type of x is number, not 1
type z = typeof x // the z is of type number.