У меня есть существующая библиотека 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 - и в выводе об этом не упоминалось.
Как мне объявить эту функцию?