Typescript 不会提示缺少或太多对象属性

标签 typescript

有人知道为什么 Typescript 没有提示缺少 c 吗?

type MyType = {a: number, b: number, c: number}


const Defaults = {myDefault: {a: 5, b: 6} as MyType}

如果我有

const Defaults = {myDefault: {a: 5, b: 6, d: 9} as MyType}

它提示 c 是一个缺失的属性(而不是提示 d 未知)。但如果我只有 ababcd,它就不会提示。

添加 required 也不会改变任何内容。

const Defaults = {myDefault: {a: 5, b: 6} as Required<MyType>}

为什么会这样?

最佳答案

David Scholz 的答案似乎是正确的,但我认为在这种情况下您可能更愿意不使用 as 运算符。如果您完全键入变量 Defaults,TypeScript 会提示 c 未按预期指定:

type MyType = {a: number, b: number, c: number}
type DefaultsType = {myDefault: MyType};

const defaults: DefaultsType = {myDefault: {a: 5, b: 6}}

关于Typescript 不会提示缺少或太多对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71193992/

相关文章:

javascript - 如何编写 Typescript 插件?

node.js - Nodejs + typescript 如何使用类模型?

jquery - 如何让 jquery ui 日期选择器与 angular2 一起使用?

javascript - 如何使用没有 `strictTemplates` 的自定义事件(不是事件发射器)来提示 `$event` 不是自定义事件类型?

typescript - CORS 预检 channel 在 Spring Security 中未成功

angular - ngx-mask Angular 14.2.10 的问题

angular - 带有插值的 graphql-codegen 动态场

javascript - 如何将文本区域的内容发送到 Typescript/Javascript/Html 中的函数

javascript - 为什么 ts-node 不编译 typescript 文件?

Angular 2如何绑定(bind)两个组件的行为