TypeScript 在checkJs模式下,添加一个标志以明确禁止"懒惰初始化空对象"模式,

kx1ctssn  于 6个月前  发布在  TypeScript
关注(0)|答案(1)|浏览(61)

Bug报告

🔎 搜索词

ts2739 jsdoc

🕗 版本与回归信息

  • 这是我尝试的每个版本中的行为,我查看了关于 ts2739 的FAQ条目。

⏯ Playground链接

带有相关代码的Playground链接:

  • JavaScript + JSDoc
  • TypeScript 中相同代码的等效项

💻 代码

JavaScript

/**
* @typedef Foo
* @property {number} foo
* @property {string} bar
*/

/** @type {Foo} */
const x = {}; // No error here, even though x is missing some properties
x.foo = 3;

TypeScript

type Foo = {
    foo: number;
    bar: string;
}

const x : Foo = {}; // x gets a TS2739 error, as expected
x.foo = 3;

🙁 实际行为

JavaScript + JSDoc版本没有得到TS2739错误。

🙂 预期行为

应该发出TS2739,类似于在这段代码的TypeScript等效项中发生的情况。
我认为这可能是为了解决在JavaScript中可能发生但在使用TypeScript时永远不会发生的情况(尽管我不确定这种情况可能是什么)。如果是这种情况,请考虑将此行为视为添加一个配置选项以消除此行为的特性请求。

qgelzfjb

qgelzfjb1#

我明白在JS中允许懒惰初始化,但实际上这似乎是一个错误,即使在使用所有属性之前就使用了x,错误也不会被标记。

相关问题