类型鉴别器 - 如何限制参数

托马斯

假设我想做以下事情:

type Car = {
    type: 'car'
}

type House = {
    type: 'house'
}

add('car', {type: 'car'})   // < this is fine.

add('house', {type: 'car'}) // < this should cause a compile time error.

是否可以编写一个add强制执行此约束方法?

另一个要求是,type您可以添加的内容没有限制唯一的限制应该是types 必须匹配。

TS-游乐场链接

Vojtech Strnad

稍微修改您的代码以使其按预期工作:

const add = <TObj extends {type: TKey}, TKey extends string>(key: TKey, obj: TObj) => {
    /* ... */
}

游乐场链接

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章