JSDoc 相当于 Typescript 的 `as const` 吗?

bsc*_*dam 5 types jsdoc typescript

我在一个太大而无法轻松转换为 Typescript 的旧项目中,所以我一直在使用 JSDoc。我无法弄清楚如何在 JSDoc 中复制的 Typescript 功能as const用于完全键入静态对象的属性名称和值。

// In Typescript
const anObject = {hello: 'world'} as const;
// (type shows as {hello:'world'} instead of {hello:string}
Run Code Online (Sandbox Code Playgroud)

在 JSDoc 中是否有任何等价物?我已经完全找不到这样做的任何东西(@readonly并且@const不要这样做),因此我必须基本上将任何静态对象复制粘贴为一种类型才能正确键入这些情况,这当然不是干燥的。

Zac*_*chB 77

从 Typescript 4.5 开始:

const foo = /** @type {const} */ ({x: 1});
const bar = /** @type {const} */ ("baz");
Run Code Online (Sandbox Code Playgroud)

请注意,括号是必需的;这是强制转换语法,而不是普通的类型注释。