我有一个现有的JavaScript库,期望这样调用:
Area.Subcategory.fn();
我正在尝试使用通过 create-react-app 创建的打字稿应用程序调用此功能。但是,我无法创建实际使用的类型声明文件。
我已经创建了一个类型声明文件test.d.ts
:
declare namespace Area.Subcategory {
function fn(): void;
}
然后,我指示App.tsx
使用此类型声明:
///<reference path="./test.d.ts" />
import React from "react";
export interface IAppProps {}
export default class App extends React.Component<IAppProps, any> {
public componentDidMount() {
Area.Subcategory.fn();
}
public render() {
return <div className="App">(placeholder)</div>;
}
}
我也尝试将声明包装在模块中,尽管我对此表示怀疑,因为这会更改调用模式:
test.d.ts:
declare module "test" {
export namespace Area.Subcategory {
function fn(): void;
}
}
App.tsx:
import * as test from "test";
...
public componentDidMount() {
test.Area.Subcategory.fn();
}
此外,我尝试将原始的test.d.ts文件移至更高的“ typings”目录,并在tsconfig.json中引用该文件。那并没有影响结果。
仅使用///指令,我得到了:
'Area' is not defined no-undef
当我尝试将其放入模块中时,得到了:
Module not found: Can't resolve 'test' in (path)
第一次尝试似乎更有希望,但是Typescript编译器似乎忽略了类型声明文件。作为测试,我尝试在test.d.ts中放入明显的语法错误-输出未提及它。
我应该如何声明此功能?