打字稿:强制执行泛型以强制使用某些键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打字稿:强制执行泛型以强制使用某些键相关的知识,希望对你有一定的参考价值。

我想下面的函数应该只接受data对象,如果有id键。然后,想要从id访问data

function someFuntion<T>(data : T){
const id = data['id']  //Error : Element implicitly has an 'any' type because type '{}' has no index signature.
}

可能吗?

答案

您需要为泛型类型参数添加约束:

function someFuntion<T extends { id: any}>(data : T){
    let id = data['id'] 
    id = data.id // also ok 
}

以上是关于打字稿:强制执行泛型以强制使用某些键的主要内容,如果未能解决你的问题,请参考以下文章

打字稿 - 强制值成为接口的属性

打字稿:允许泛型类型仅是具有“字符串”属性的对象

打字稿:使用类型声明强制进行空检查?

是否可以强制打字稿使用来自definitelyTyped 的类型而不是本机库类型?

访问数组索引时如何强制打字稿给出错误

具有定义值的打字稿动态对象键