如何使用VSCode

时间:2017-06-09 07:41:21

标签: typescript visual-studio-code

我有这样的非ts代码:

// foo.js

module.exports = app => {
  // some logic here
}

我想使用typescript定义文件来定义参数app的类型,这样VSCode会给我智能感知

// foo.d.ts
interface App {
  name: string
  bar: number
}

然后我在我的js文件中执行jsdocs:

// foo.js - updated
/// <reference path="./foo.d.ts" />
/**
 * @param {App} app
 */
module.exports = (app) => {

}

当我写app.时,它会显示可用的属性。

但是如果我改变我的定义文件以使它具有依赖性:

import * as React from "react"

export interface App {
    name: string
    count: number
}

知识分子停止工作。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您的foo.js是一个模块,因此您的声明文件也应将其描述为模块。通过在import文件顶部添加foo.d.ts,您宣布一个模块 - 到目前为止一直很好。

要使用foo模块,您必须使用import关键字(假设下面的代码位于与foo.d.ts位于同一目录中的文件中):

import {App} from './foo';

/**
 * @param {App} app
 */
module.exports = (app) => 
{
    console.log(app.count); //VSCode intellisence suggests name and count properties here
}