使用@ts-check选项处理空初始化的对象

问题描述 投票:0回答:1

我在 VScode 中启用了非常有用的

// @ts-check
选项,但现在我不知道如何处理空初始化的对象。

这是一个简化的示例:

// @ts-check

const settings = {
  a: null,
  b: null
}

settings.a = 10

VSCode 报告 类型“10”不可分配给最后一行中的类型“null”, 我希望能够稍后在代码中设置

settings.a

请注意,这是 Javascript,而不是 Typescript。我找到了很多回复,但都是针对 TS 的,不适用于 JS

谢谢你。

javascript jsdoc
1个回答
0
投票

您可以使用 JSDoc 在

@typedef
(JSDoc) /
@typedef
(TypeScript 文档)
中定义对象,并在
@type
(JSDoc)
/
@type
(TypeScript 文档)
中引用该对象。出于说明目的,这假设
b
应该是一个字符串:

// @ts-check

/**
 * @typedef MyType 
 * @type {object}
 * @property {number|null} a - a numeric value 
 * @property {string|null} b - a string value
 */

/**
 * @type {MyType}
 */
const settings = {
  a: null,
  b: null
}

游乐场链接

请注意,您可以直接在

@type
中定义对象,但是
@typedef
允许

  • 多次参考
  • 添加字段文档

话虽如此,在

@type
中定义对象形状要紧凑得多:

// @ts-check

/**
 * @type {{a: number|null; b: string|null}}
 */
const settings = {
  a: null,
  b: null
}

游乐场链接

© www.soinside.com 2019 - 2024. All rights reserved.