Javascript typescript-字符串文字类型到类型字符串
我有一个字符串文本类型的方法Javascript typescript-字符串文字类型到类型字符串,javascript,string,typescript,typeliteral,Javascript,String,Typescript,Typeliteral,我有一个字符串文本类型的方法 type Status = 'new' | 'update' | 'close'; itemRequest(status: Status) { itemService.subscribeToChanges(status) //third party library method } 我遇到的困难是这个第三方方法接受的字符串不是我的自定义字符串类型Status subscribeToChanges(status: string) 当我传递给第三方方法
type Status = 'new' | 'update' | 'close';
itemRequest(status: Status) {
itemService.subscribeToChanges(status) //third party library method
}
我遇到的困难是这个第三方方法接受的字符串不是我的自定义字符串类型Status
subscribeToChanges(status: string)
当我传递给第三方方法时,如何使我的字符串文本实际上是字符串的类型。它知道它实际上是一个字符串吗 您可以将状态设置为枚举吗?然后您可以使用
Status[Status]
,这将是您期望的字符串值。
i、 e
它应该会起作用。在JavaScript中,它是一个普通字符串。查看此示例或访问它
您可以将
状态的值转换为如下字符串:
type Status = 'new' | 'update' | 'close';
itemRequest(status: Status) {
itemService.subscribeToChanges(status as string)
}
不要使用字符串(状态)
。这将从status
构造一个新的string
对象,这是一种浪费性的分配。强制转换将在运行时被删除,并且只更正TypeScript对状态
变量类型的了解。请记住,TypeScript所做的任何类型检查都是在编译时完成的,并且没有运行时开销,也不存在任何问题
此代码将编译为以下内容:
itemRequest(status) {
itemService.subscribeToChanges(status)
}
然而,我对为什么会发生这种情况感到困惑。您的类型别名都是类型字符串
,因此从状态
到字符串
的转换应该是向上转换(即,在任何合理的类型检查器下都是允许的)。另一种方式将是主要问题。事实上,您的原始代码本身就可以正常工作。到底是什么问题?当传递状态时,您遇到编译错误
?什么错误?我无法复制它。它应该转换为小写的字符串
,而不是大写的字符串
。看见
type Status = 'new' | 'update' | 'close';
itemRequest(status: Status) {
itemService.subscribeToChanges(status as string)
}
itemRequest(status) {
itemService.subscribeToChanges(status)
}