8

我用 CRA 创建了一个 react typescript 项目,命令如下yarn create react-app my-app --typescript

现在我安装了一个模块foo,默认情况下没有任何类型,不在defentlytyped存储库中。

即在一个组件中,我有

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' }

只是为了拥有fooas 类型any,但仍然得到相同的错误。似乎任何编译器(webpack,其他转译器)都没有在types文件夹中找到声明

如何向项目添加自定义类型声明?

4

2 回答 2

0

这是一个真实的用例示例。我设法将kendo -ui-core集成到 CRA+Typescript 中。

问题是 kendo-ui-core 没有类型,即类型有不同的名称:@types/kendo-ui

Typescript 抱怨没有类型定义

VS Code 抱怨缺少声明

要解决此问题,请在/src目录中创建一个名为kendo-ui-core.d.ts的文件,其中包含以下内容:

// src/kendo-ui-core.d.ts
declare module 'kendo-ui-core' {
  import * as KendoTypings from '@types/kendo-ui';
  export = KendoTypings;
}
于 2019-11-09T11:41:24.493 回答
-2

这有效:

/* create src/CustomTypes.ts */

namespace MyCustomType {
  export type foo = number;
}

export default MyCustomType;

像这样使用:

import MyCustomType from "src/CustomTypes";

const num: MyCustomType.foo = 123;
于 2019-03-18T22:49:05.053 回答