Typescript + create-реагировать-приложение: взаимодействие с существующими библиотеками Javascript? - PullRequest
0 голосов
/ 19 мая 2019

У меня есть существующая библиотека JavaScript, которая должна вызываться следующим образом:

Area.Subcategory.fn();

Я пытаюсь вызвать это из машинописного приложения, созданного с помощью create-реакции-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 - и в выводе об этом не упоминалось.

Как мне объявить эту функцию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...