我是TS新手,希望创建自定义类型
我想有一个自定义类型(Numbers_2),它接受一些数字加上存储在某个变量(n1)中的值,并让它以与Numbers_1相同的方式工作
let n1 = 40;
type Numbers_1 = 10 | 20 | 30 | 40;
type Numbers_2 = 10 | 20 | 30 | n1; // 'n1' refers to a value, but is being used as a type here. Did you mean 'typeof n1'?
let n2: Numbers_2 = 1230; // This line should signal a problem
非常感谢帮助!
1条答案
按热度按时间hfsqlsce1#
通过使用TypeScript's
typeof
type-operator(与JavaScript的typeof
运算符不同),您可以这样做,但是您还需要将let n1
更改为const n1
,因为当n1
可变时,typeof n1
是number
,而不是文本值。就像这样:
...这将导致第4行出现错误,这正是您所期望的:
类型“1230”不能赋给类型“
Numbers_2
”。如果你希望或者需要
n1
是可变的,那么你所要求的是不可能的,作为演示:typeof n1
必须为number
,因为parseInt
返回number
-这反过来意味着type Numbers_2
为10 | 20 | 30 | number
,这意味着let n2: Numbers_2 = 1230;
是有效的。如果你需要一个
number
类型的“input”变量,但仍然希望Numbers_2
被约束到一个已知的,可能的值的小集合,那么you'll need to explicitly narrow it,如下所示: