我已经定义了联合类型,
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
}
反正有办法使它起作用吗?还是我需要重新考虑设计?
答案 0 :(得分:1)
我知道为什么它不起作用,类型别名在编译后就被编译掉了。但是还有另一种方法吗?
您必须使用运行时可用变量进行运行时检查。
您可以将BinaryData
导出为运行时变量
type TextData = string
type BinaryData = Blob
const BinaryData = Blob;
type DataType = TextData | BinaryData
function doSomethingWithData(data: DataType): void {
if (data instanceof BinaryData) {
// works
}
}