当前位置: 首页 > 知识库问答 >
问题:

Typescript类型“string”不能分配给类型

锺离自明
2023-03-14

这是我的水果

export type Fruit = "Orange" | "Apple" | "Banana"

现在我正在导入另一个typescript文件中的fruit.ts。这是我的

myString:string = "Banana";

myFruit:Fruit = myString;

当我做的时候

myFruit = myString;

我得到一个错误:

类型“string”不能分配给类型“orange”“apple”“banana”“

如何将字符串赋给自定义类型fruit的变量?

共有2个答案

窦夜洛
2023-03-14

Typescript3.4引入新的“const”断言

现在,您可以防止文字类型(例如“orange”“red”)被“加宽”为具有所谓const断言的类型string

您将能够执行以下操作:

let fruit = 'orange' as const;  // or...
let fruit = <const> 'orange';

然后它就不会再把自己变成字符串了--这就是问题的根源。

濮君植
2023-03-14

您需要将其转换为:

export type Fruit = "Orange" | "Apple" | "Banana";
let myString: string = "Banana";

let myFruit: Fruit = myString as Fruit;

还请注意,使用字符串文字时,只需使用一个

正如@simon_weaver的另一个回答中提到的,现在可以将其断言为const:

let fruit = "Banana" as const;
 类似资料:
  • 我有一个打字错误: 类型“(element:Conversation)=>void”的参数不可赋给类型“(value:Conversations,index:number,obj:Conversation[])=>boolean”的参数。不能将“void”类型赋给“boolean”类型。 这个错误是什么意思?提前谢谢你。

  • 我试图用flutter插件HTTP发出HTTP POST请求,但我得到了一个标题错误。有人知道这是什么原因吗?因为在我的其他应用程序中,这工作得非常好?

  • 将以下代码转换为typescript时出错。 错误TS2339:属性样式在元素类型上不存在。 当我为如下相同的值分配所需值时 那么误差在元素上,那就是 错误TS2322:类型“Element | null”不可分配给类型“{style:any;}”。类型“null”不可分配给类型“{style:any;}”。

  • 这是一个类中的函数,允许你双击和单击手势。它在Swift 2.3中运行良好,但在转换到Swift 3后,它抛出了一些错误。我怎么也想不明白。我评论了它们发生的地方。

  • 我是angular的新手,我在学习这个hero教程时,偶然发现了这个错误: 我在这里复制了错误。

  • 我有这个打字代码: 给我以下错误: 严重性代码描述项目文件行抑制状态错误构建:“字符串|1”类型的参数不能分配给“字符串”类型的参数。 有人能帮我吗?我刚刚升级到新版本的Typescript,这条消息现在出现在多个地方。当我将鼠标悬停在categoryColumnWide上时,它显示这是一个“数字” 据我所知,我使用的是Typescript 2.1