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
    }
}

我知道它为什么不起作用,类型别名在编译后会被编译掉。但是还有别的办法吗?没想到打字的人会有反应。非常感谢。