我有一个类型A或B的示例。我想创建一个函数,它接受A或B的参数并返回其 Package 的参数。
type A = { name: string };
type B = A[];
type DucktypedA = { // idc how this struct looks like as we can differentiate between A and B
a: A,
};
type DucktypedB = {
b: B,
}
function test(arg: A | B): DucktypedA | DucktypedB {
if (arg instanceof A) {
return { a: arg };
} else {
return { b: arg };
}
}
这在打字机上可能吗?
const a = { name: "me" };
const wrappedA = test(a); // --> { a: { name: "me" } }
const b = [{ name: "me" }];
const wrappedB = test(b); // --> { b: [{ name: "me" }] }
1条答案
按热度按时间gjmwrych1#
instanceof
不能处理类型脚本类型。它只能处理类,但仅此而已你可以使用类型保护函数把“类型检查”带入运行时领域。Play