gpt4 book ai didi

typescript - 为什么在对象字面量和变量上输入的方式不同?

转载 作者:搜寻专家 更新时间:2023-10-30 21:21:54 25 4
gpt4 key购买 nike

我想我在某处看到过有关此的内容,但我再也找不到了。

我想了解为什么在对象字面量和变量之间应用/强制执行 TypeScript 类型不同。

interface User {
id: number;
}

function p(u: User) { }

const u1 = { id: 123 }

const u2 = { id: 124, foo: 'bar' };

p(u1); // << Works as expected

p({ id: 124, foo: 'bar' }); // << ERROR as expected: ' Object literal may only specify known properties'

p(u2); // << NO ERROR??

// workaround
const u3: User = { id: 124, foo: 'bar' }; // << ERROR as expected

解决方法是可行的,但不对称性会导致意外行为,开发人员会进行严格的部分检查以意识到允许使用其他属性。

我确信这是有原因的,我很想知道解释。

最佳答案

Here's a part from the handbook which talks about this.总结一下我能做的最好的事情:检查对象文字是否有多余的属性(而不是“传递”对象)的原因是因为多余的属性通常是在处理诸如选项对象,这是一种非常常见的模式。

我不确定我自己是否完全同意这个推理,但事实就是这样¯\_(ツ)_/¯

关于typescript - 为什么在对象字面量和变量上输入的方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51996328/

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