gpt4 book ai didi

javascript - 从 jsDoc 引用一个 TS 接口(interface)

转载 作者:行者123 更新时间:2023-12-05 01:36:35 26 4
gpt4 key购买 nike

由于 jsDoc 符号和 tsconfig.json 文件,使用 VSCode 几乎可以从 .js 中的 Typescript 中受益:

{
"compileOnSave": false,
"compilerOptions": {
"noEmit": true,
"allowJs": true,
"checkJs": true,
"target": "es6",
"resolveJsonModule": true,
"moduleResolution": "node",

},
"include": ["index.js", "./src"]
}
/**
* @return {Promise<string>}
*/
const foo = Promise.resolve('hi');
module.exports = foo;

现在,是否可以在 node_modules 引用 d.ts 中定义的接口(interface)?特别是我要返回一个 - 让我们调用 - “my_dependency.Storage” 对象,但我无法使用纯 javascript 引用它:

/**
* @param {Storage} storage
*/
const goo = storage => ...

会明白我指的是来自 lib.dom.d.ts

的 Web Storage API
  • 等效的 typescript 是:
import {Storage} from "my_dependency"
///<reference path="node_modules/my_dependency/lib/index.d.ts" />
  • 我期待类似(伪代码)的东西
/**
* @param {my_module.Storage} storage
*/

最佳答案

正如@Akxe 提到的,这是从库中引用类型的方法:

/**
* @param {import("my_dependency").Storage} storage
*/
const goo = storage => ...

现在,我发现自己一遍又一遍地重复那句话,所以我创建了一个环境别名,如下所示:

types.d.ts

declare namespace MyProject {
type St = import("my_dependency").Storage; // alias: reference my_dependency.Storage from plain js code
}

index.js

/// <reference path="types.d.ts"/>
...

src/foo.js

/**
* @param {MyProject.St} storage
*/
const goo = storage => ...

关于javascript - 从 jsDoc 引用一个 TS 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61867243/

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