как добавить объявление типа в проект response-typescript с помощью CRA

Я создал проект реагирующего машинописного текста с CRA с помощью команды yarn create react-app my-app --typescript

теперь у меня установлен модуль foo, в котором нет набора текста ни по умолчанию, ни в репозитории с защищенным типом.

т.е. в компоненте у меня есть

import {bar} from 'foo';

что выдает ошибку Type error: Could not find a declaration file for module 'foo'. '/*/node_modules/foo/dist/entry.js' implicitly has an 'any' type.

Я создал foo.d.ts в папке типов в корне проекта, например

declare module 'foo'{ import * as React from 'react' }

просто чтобы foo был типом any, но все равно получить ту же ошибку. похоже, что какой бы компилятор (веб-пакет, другой транспилятор) не находил декларацию в папке types

как добавить в проект объявление произвольного типа?


person Amir-Mousavi    schedule 18.03.2019    source источник
comment
Вы пробовали использовать следующий формат в своем foo.d.ts? 'экспортная функция foo () {...};'   -  person Chris Chen    schedule 19.03.2019
comment
и что вы имеете в виду? реализация для foo? @ChrisChen   -  person Amir-Mousavi    schedule 20.03.2019


Ответы (2)


Вот реальный пример использования. Мне удалось интегрировать kendo-ui-core в CRA + Typescript.

Проблема заключалась в том, что для kendo-ui-core нет типизации, а именно у типизации другое имя: @ types / kendo-ui

Typescript жаловался на отсутствие определений типов

Код VS жалуется на отсутствие декларации

Чтобы решить эту проблему, создайте файл с именем kendo-ui-core.d.ts в каталоге / src со следующим содержимым:

// src/kendo-ui-core.d.ts
declare module 'kendo-ui-core' {
  import * as KendoTypings from '@types/kendo-ui';
  export = KendoTypings;
}
person Tudor Morar    schedule 09.11.2019
comment
нам нужно добавить kendo-ui-core.d.ts в определенную папку, например src/@types, а затем добавить эту папку в tsconfig? - person Amir-Mousavi; 19.03.2020

Это работает:

/* create src/CustomTypes.ts */

namespace MyCustomType {
  export type foo = number;
}

export default MyCustomType;

использовать так:

import MyCustomType from "src/CustomTypes";

const num: MyCustomType.foo = 123;
person Tyro Hunter    schedule 18.03.2019
comment
Хотелось бы увидеть аргументы тех, кто проголосовал против ответа - person idleberg; 18.01.2021