"'string' 的 TypeScript 类型不可分配给类型"
"'string' 的 TypeScript 类型不可分配给类型"
这是我在fruit.ts中写的内容:
export type Fruit = "Orange" | "Apple" | "Banana"
现在我在另一个typescript文件中导入了fruit.ts。以下是我的内容:
myString:string = "Banana"; myFruit:Fruit = myString;
当我执行以下代码时:
myFruit = myString;
我遇到了一个错误:
类型“string”不能分配给类型“\"Orange\" | \"Apple\" | \"Banana\"”
我该如何将字符串赋值给自定义类型Fruit的变量?
admin 更改状态以发布 2023年5月23日
Typescript 3.4
新增了新的 'const' 断言
现在你可以使用所谓的 const
断言来防止字面量类型(如 'orange'
或 'red'
)被“扩大”为类型 string
。
你可以这样做:
let fruit = 'orange' as const; // or... let fruit ='orange';
这样它就不会再被转换为 string
了,这是该问题的根源所在。
你还可以对整个对象进行断言:
let animals = [ { species: 'dog' }, { species: 'cat' } ] as const; type firstAnimal = (typeof animals)[0]['species']; // string literal 'dog'
附加提示:你也可以使用
或
来表示必须为 true 或 false 的布尔值。在一些情况下(如磨刀霍霍向猪羊)这可能很有用。你会在看到的时候知道它的用途。