文件结构
frontend
| static
| ts
| react
|components
AnotherFile.d.ts
Index.d.ts
上下文
当我按如下方式实现 AnotherFile.d.ts 和 Index.d.ts 时,IntelliJ似乎对这两个文件没有产生任何错误:>
Index.d.ts
interface myFuncType {
(n: number): void;
}
AnotherFile.d.ts
/// <reference path='./Index.d.ts'/>
interface AnotherType {
f: myFuncType
}
现在,如果 Index.d.ts 导入并使用如下类,则IntelliJ在 AnotherFile.d.ts 中用红色下划线标记“ myFuncType”,并显示错误, TS2304: Cannot find name 'myFuncType'
。
Index.d.ts
import {MyClass} from "static/ts/MyClass";
interface myFuncType {
(n: MyClass) : void;
}
AnotherFile.d.ts
/// <reference path='./Index.d.ts'/>
interface AnotherType {
f: myFuncType;
}
注释
...<reference path.../>
的{{1}}行,错误消失了,但是我想知道是否存在使用import {myFuncType} from "static/ts/react/components/Index";
时进行这项工作的方法。 ...<reference path.../>
行中使用相对路径(例如,用import ...
而不是import {myFuncType} from "./Index"
问题
在没有在 AnotherFile.d.ts 中引入任何“ import”语句的情况下,如何使第二种情况起作用。
答案 0 :(得分:1)
通过将import
添加到您的Index.d.ts
中,您将其设置为module。与namespaces不同,只能通过使用一种导入形式显式导入模块来使用模块,因此会产生编译器错误。
在定义界面(应该使用d.ts
文件的方式)时,您需要确定所使用的应用程序类型。如果是模块化应用程序,则需要使用模块。对于应该从全局范围(例如,通过浏览器中的<script src=...>
访问)的全局应用程序,请使用名称空间。将两者混合在同一代码中将无效。
有关更多信息,请参见https://www.typescriptlang.org/docs/handbook/declaration-files/library-structures.html