如何根据函数的输入参数之一返回带有“selected”类型之一的区别联合?
type KeyValueDocument = {
key: "type-a";
propA: string;
} | {
key: "type-b";
propB: string;
}
function getKeyValue(key: string): KeyValueDocument {
// ... implementation ...
assert(result.key == key);
return result;
}
const value = getKeyValue("type-b");
console.log(value.propB); // Bang!
答案 0 :(得分:4)
您可以为不同的密钥设置不同的签名:
function getKeyValue(key: "type-a"): { key: "type-a"; propA: string; };
function getKeyValue(key: "type-a"): { key: "type-b"; propB: string; };
function getKeyValue(key: string): KeyValueDocument {
...
}