Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ts check JS文件中的引用定义_Javascript_Typescript_Jsdoc - Fatal编程技术网

Javascript ts check JS文件中的引用定义

Javascript ts check JS文件中的引用定义,javascript,typescript,jsdoc,Javascript,Typescript,Jsdoc,我有一个混合的TS/JS项目——最终我们将使用完整的TS,但现在还有很长的路要走 与此同时,我们在JS文件和标记中使用了/@ts check解除激活,它们非常强大 我想引用JS文件中的一些TS定义,如下所示: // @ts-check /// <reference path="MyInterface.d.ts" /> /** @type {MyInterface} */ let x = ... /@ts检查 /// /**@type{MyInterface}*/ 设x=。。。

我有一个混合的TS/JS项目——最终我们将使用完整的TS,但现在还有很长的路要走

与此同时,我们在JS文件和标记中使用了
/@ts check
解除激活,它们非常强大

我想引用JS文件中的一些TS定义,如下所示:

// @ts-check
/// <reference path="MyInterface.d.ts" />

/** @type {MyInterface}  */
let x = ...
/@ts检查
/// 
/**@type{MyInterface}*/
设x=。。。
只有这不起作用-TS类型检查(以及VS2017的intellisense)认为
x
any

我希望intellisense用于
x
上的类型定义,并在调用
x.propName
MyInterface
没有
propName
时发出警告

我知道我可以用JS文档
@typedef
替换
,但我有很多定义文件,不希望定义重复

有没有办法使
@ts检查
引用
.d.ts
文件?

使用导入类型:

// @ts-check

/** @type {import("./MyInterface").MyInterface} */
let x = ...;
或者,您可以使用
@typedef
为导入的类型指定名称:

// @ts-check

/** @typedef {import("./MyInterface").MyInterface} MyInterface

/** @type {MyInterface} */
let x = ...;

您的定义文件中是否有导入@是的,我们在TS目录文件中广泛使用ES6
import
,但在JS中没有。我试试看。@Ankhen试过了-它不起作用。我们不希望每个
.d.ts
定义都成为全局定义,每个定义都包含特定的
导出
导出默认
撤销-在
@ts检查
引用中,类始终是默认的,因此,在
MyInterface.d.ts
中,我们既有
export interface MyInterface
又有
export default MyInterface
,因此
import{MyInterface}…
import MyInterface…
两者都有效。明白了。不幸的是,没有其他想法。这是可行的,也是我第一次遇到JSDoc
@type
derActives的语法(它看起来像ES6动态
导入
,没有
等待
)。有人真的需要把它添加到某个文档中。