我有这样的非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
}
知识分子停止工作。
我做错了什么?
答案 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
}