gpt4 book ai didi

typescript - 强制执行接口(interface)值的类型

转载 作者:行者123 更新时间:2023-12-02 02:00:27 24 4
gpt4 key购买 nike

正在学习 Typescript,并试图了解如何基于接口(interface)强制执行类型。

我有这段代码

    interface User{
name:string;
age:number;
friends:string[]
hasPet:boolean
}

function setValue<T>(key:keyof T, value: T[keyof T] ):void{
console.log(key, value)
// ...some additonal logic
}

setValue<User>("age", true ) //should throw error but doesn't

我希望此接口(interface)在调用 setValue 时强制执行键类型。这大部分都有效,但我可以将任何可用的用户类型传递到设置值中。

我期望的是,当“age”作为第一个参数传递给setValue时,第二个参数应限制为“number”类型。所有其他用户 key 也相同。

感谢您的帮助!

最佳答案

您应该在 Typescript Playground 中检查这一点。它没有抛出错误的原因 keyof 返回表示所有属性键的类型。

所以你的函数实际上看起来像:

setValue(key: keyof User, value: string | number | boolean | string[])

显然,您想要做的事情适合其中一种类型。

就好像你试图做类似的事情:

let newUser: User;
newUser.age = 'abc'; // Type error

关于typescript - 强制执行接口(interface)值的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69035600/

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