访问联合类型的“子类型”的部分

时间:2019-10-23 12:56:12

标签: typescript

如果我有一个联合类型,例如:

type StateUpdate = { key: 'surname', value: string }
| { key : 'age', value: number };

这很方便,因为它使我可以从键中确定值的类型。

但是,我希望能够具有其他功能,这些功能只能使用联合类型中的有效“键”来调用。在上面的示例中,这意味着它必须是“姓”或“年龄”。

我知道我可以将另一种类型确定为:

type ValidKey = 'surname' | 'age';

然后我可能具有一些任意功能,例如:

(keyName: ValidKey) => (console.log(keyName)); // ...or whatever

这要求我始终确保两者对应。有没有一种自动处理此问题的好方法,或者有一种更好的方法可以完全做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用indexed type query

type ValidKey = StateUpdate ['key'];

Play