相关疑难解决方法(0)

如何使用Typescript定义在VS Code中为我自己的Javascript服务获取Intellisense?

我正在使用SailsJS开发后端服务器.它基本上将所有模型助手服务以及我自己的服务注入全局命名空间.如果我能够获得这些服务的Intellisense,那将对我有很大帮助.

我首先为lodash和node 设置了typings并安装了全局类型定义.在创建jsconfig.jsontsconfig.json文件之后,它就像一个魅力.

接下来,我想为自己的服务创建一个基本定义文件.我在typings / globals中创建了一个目录,其中包含一个index.d.ts文件:

declare namespace foo {
    export function bar();
}
declare var baz: { some: number };
Run Code Online (Sandbox Code Playgroud)

这只是为了确保我不浪费时间编写定义,如果它们不起作用.

接下来,我通过添加引用标记在typings / index.d.ts中包含index.d.ts文件:

/// <reference path="globals/psiewakacje/index.d.ts" />
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,它在我的项目的Javascript文件中不起作用.在打字foo.baz.我没有得到任何明智的智能感知.

 

我能够获得的唯一的Intellisense支持是当我通过以下方式在每个文件中导入这些服务时:

import * as InternalParser from '../services/InternalParser';
Run Code Online (Sandbox Code Playgroud)

要么

var InternalParser = require('../services/InternalParser');
Run Code Online (Sandbox Code Playgroud)

但这不使用Typescript的定义文件,只是给我导出的属性.总的来说,这是一个不理想

 

我想知道如何让它正常工作.我查看了node和lodash的类型定义文件,他们也这样做:声明一个具有特定类型的变量/命名空间.但是,他们的定义适用于Javascript,而我的定义则不然.怎么做对吗?

javascript intellisense typescript visual-studio-code typescript-typings

13
推荐指数
2
解决办法
2255
查看次数

在JavaScript的类型文件中声明接口

项目信息

我正在开发一个利用.d.ts文件的JavaScript项目。这是我先前提出的问题的后续问题,因此您可以在此处查看有关该项目的更多信息。

问题

尽管我通常可以从类型文件中提取函数,但是我不能提取为空或仅由接口组成的接口或名称空间。我已经通过const为每个接口创建一个实现并@typeof ConstantImplementation在注释中使用来临时解决了此问题。请参见下面的示例:

// Typings File
export namespace test {
    export interface ITest {
        foo: string;
        bar: number;
    }
    export const Test: ITest;
}
Run Code Online (Sandbox Code Playgroud)
// JS File
if (undefined) var {Test: ITest} = require("globals.d.ts").test; 
// Above line shows `unused var error`

/* @type {typeof ITest} */
var x = {};
x.foo = "hello";
x.bar = 3;
// if I do `x.` intellisense should suggest `foo` and `bar` 
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更好的方法来解决该问题,最好是一种不会抛出错误(使用eslint ignore …

javascript intellisense interface visual-studio-code .d.ts

8
推荐指数
2
解决办法
420
查看次数