Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
Typescript 如何使用VSCode在非类型脚本文件中使用类型定义_Typescript_Visual Studio Code - Fatal编程技术网

Typescript 如何使用VSCode在非类型脚本文件中使用类型定义

Typescript 如何使用VSCode在非类型脚本文件中使用类型定义,typescript,visual-studio-code,Typescript,Visual Studio Code,我有一个非ts代码,如下所示: // foo.js module.exports = app => { // some logic here } 我想使用typescript定义文件来定义参数app的类型,这样VSCode就会给我intelisense // foo.d.ts interface App { name: string bar: number } 然后在我的js文件中执行jsdocs: // foo.js - updated /// <referenc

我有一个非ts代码,如下所示:

// foo.js

module.exports = app => {
  // some logic here
}
我想使用typescript定义文件来定义参数
app
的类型,这样VSCode就会给我intelisense

// 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) => {

}
Intelissense停止工作


我做错了什么?

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

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


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

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


我写的代码不是typescript,所以我不能做
let c:foo.App
我只想使用VSCode intelissense的typescript定义,这没有任何区别。您正在声明一个模块,因此必须导入它才能在js中使用。您可以在这里省略typescript的细节。要点是您必须使用
import
关键字。将ts定义文件导入js有什么意义?您没有导入typescript定义。您正在导入javascript模块-请在此处检查js语法:。定义只是用来输入信息的,永远不会被“导入”。你可能误解了我的问题。我有两个文件,一个是我应用程序的typescript类型定义,另一个是我应用程序的代码。我只想将此类型定义用于IntelisSense,我只想让VSCode了解我使用jsdocs处理的变量的类型。我编写的代码不是typescript,因此我无法执行
let c:foo.App
我只想将typescript定义用于VSCode IntelisSense这没有任何区别。您正在声明一个模块,因此必须导入它才能在js中使用。您可以在这里省略typescript的细节。要点是您必须使用
import
关键字。将ts定义文件导入js有什么意义?您没有导入typescript定义。您正在导入javascript模块-请在此处检查js语法:。定义只是用来输入信息的,永远不会被“导入”。你可能误解了我的问题。我有两个文件,一个是我应用程序的typescript类型定义,另一个是我应用程序的代码。我只想将此类型定义用于IntelisSense,我只想让VSCode了解我使用jsdocs处理的变量类型。
import * as React from "react"

export interface App {
    name: string
    count: number
}
import {App} from './foo';

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