Typescript + create-react-app:与现有的Javascript库接口?

时间:2019-05-19 15:41:06

标签: typescript create-react-app

我有一个现有的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中放入明显的​​语法错误-输出未提及它。

我应该如何声明此功能?

0 个答案:

没有答案