我想根据我的函数接收的界面区分一些逻辑。为此,我试图使用标记的联合类型,例如,
someFunction(arg: TypeA | TypeB): void {
if (arg.kind === "TypeA")
{
// do this
}
else
{
// do that
}
}
,其中
interface TypeA {
kind: "TypeA";
propertyA: string;
}
interface TypeB {
kind: "TypeB";
propertyB: string;
}
但如果我想调用这个函数,那么如果我没有提供类型的值,那么Typescript会抱怨,即
let typeA: TypeA;
typeA = {propertyA: ""}
someFunction(typeA);
与
TS2322: Type '{ propertyA: string; }' is not assignable to type 'TypeA'.
Property 'kind' is missing in type '{ propertyA: string; }'.
因此,如果我每次想要区分时必须实现标记(上例中的kind
),我都不明白标记类型是如何工作的。我只能假设我使用它们错了?
答案 0 :(得分:3)