Class VSCode intellisense-类实例数组

Class VSCode intellisense-类实例数组,class,ecmascript-6,visual-studio-code,intellisense,Class,Ecmascript 6,Visual Studio Code,Intellisense,我知道VS代码的intellisense由TypeScript编译器提供支持,但我不是在写TypeScript,只是很好的ol'ES2015 无论如何,VS代码intellisense与ES6类配合得很好,但我在这里遇到了一系列的类。我敢说这超出了编译器的能力范围,但是有没有办法编写代码,使编译器能够推断数组中存储的对象的类型?很明显,这是最好的猜测 这是我的代码,告诉你我的意思 class JSONPayloadApi { constructor(payload) {

我知道VS代码的intellisense由TypeScript编译器提供支持,但我不是在写TypeScript,只是很好的ol'ES2015

无论如何,VS代码intellisense与ES6类配合得很好,但我在这里遇到了一系列的类。我敢说这超出了编译器的能力范围,但是有没有办法编写代码,使编译器能够推断数组中存储的对象的类型?很明显,这是最好的猜测

这是我的代码,告诉你我的意思

class JSONPayloadApi {
    constructor(payload) {
        this.apiName = payload.ApiName;
        this.apiRoot = payload.ApiRoot;
        this.apiTkn = payload.ApiTkn;
    }
}

class JSONPayload {
    constructor(value) {
        const payload = JSON.parse(value);

        this.apis = payload.Apis.map((x) => new JSONPayloadApi(x));
    }
}

// Pretend ive already created an instance of JSONPayload
const api = jsonPayLoad.apis[0];
在上面的代码中,VS code是否可以推断
api
实际上是
JSONPayloadApi
的一个实例,并相应地提供intellisense

我想得越多,我想就越不可能,因为事实发生后,我们可以在数组中添加我们想要的东西,破坏智能感知的任何意义。除非阵列被冻结


这不是任务关键型的或任何东西,更只是对VS代码智能感知能力的好奇。

要获得更好的智能感知,可以在javascript代码中使用@ts check注释。您必须向特定的非推断类型提供jsdoc注释。比如:

// @ts-check
let easy = 'abc'
easy = 123 // Error: Type '123' is not assignable to type 'string'

永远不要忘记它提供的类型脚本和语言服务只在编译时工作。由于javascript的动态特性,在运行时对“损坏”数据没有任何限制。

为了获得更好的智能感,您可以在javascript代码中使用@ts check注释。您必须向特定的非推断类型提供jsdoc注释。比如:

// @ts-check
let easy = 'abc'
easy = 123 // Error: Type '123' is not assignable to type 'string'

永远不要忘记它提供的类型脚本和语言服务只在编译时工作。由于javascript的动态特性,在运行时对“损坏”数据没有任何限制。

使用
jsDoc
注释直接起作用,似乎不需要
ts check
注释。
ts check
注释似乎不需要,使用
jsDoc
注释直接起作用,谢谢。