Typescript 针对字符串或Blob的类型脚本模式匹配(类型union=string | Blob)
我定义了一个联合类型Typescript 针对字符串或Blob的类型脚本模式匹配(类型union=string | Blob),typescript,types,Typescript,Types,我定义了一个联合类型 type TextData = string type BinaryData = Blob type DataType = TextData | BinaryData 我想在函数中使用它 function doSomethingWithData(data: DataType): void { if (data instanceof TextData) // doesn't work (type being used as a value error)
type TextData = string
type BinaryData = Blob
type DataType = TextData | BinaryData
我想在函数中使用它
function doSomethingWithData(data: DataType): void {
if (data instanceof TextData)
// doesn't work (type being used as a value error)
if (typeof data === 'Blob')
// doesn't work (typeof data === 'object')
if (data instanceof Blob)
// works, but I don't want to use a type alias
}
到底有没有办法让它发挥作用,还是我需要重新考虑设计
我知道它为什么不起作用,类型别名在编译后会被编译掉。但还有其他办法吗 必须使用运行时可用变量进行运行时检查 暴露于运行时 您可以将
BinaryData
导出为运行时变量
type TextData = string
type BinaryData = Blob
const BinaryData = Blob;
type DataType = TextData | BinaryData
function doSomethingWithData(data: DataType): void {
if (data instanceof BinaryData) {
// works
}
}
我知道它为什么不起作用,类型别名在编译后会被编译掉。但是还有别的办法吗?没想到打字的人会有反应。非常感谢。