gpt4 book ai didi

typescript - "K extends keyof T"与直接使用 "keyof T"之间的区别?

转载 作者:搜寻专家 更新时间:2023-10-30 20:33:04 29 4
gpt4 key购买 nike

下面的 typescript 定义有区别吗:

function prop<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}

function prop2<T>(obj: T, key: keyof T) {
return obj[key];
}

我的意思是没有,但也许我监督了一些事情。使用第一个版本(在文档中经常使用)有什么好处吗

最佳答案

不同之处在于,在第一种情况下,返回类型将为 T[K],而在第二种情况下,返回类型将为 T[keyof T]K 可以是最宽的 keyof T 但它可以是表示键的特定字符串文字类型。这意味着如果 K 是一个特定的属性,则返回值将与属性的类型相同:

function prop<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}
function prop2<T>(obj: T, key: keyof T) {
return obj[key];
}

let o = {
p1: 0,
p2: ''
}

let v = prop(o, 'p1') // is number, K is of type 'p1'
let v2 = prop2(o, 'p1') // is number | string, no extra info is captured

关于typescript - "K extends keyof T"与直接使用 "keyof T"之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53099089/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com