我已经用命令yarn create react-app my-app --typescript
用CRA创建了一个react 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.
我在项目根目录的types文件夹中创建了foo.d.ts
,例如
declare module 'foo'{ import * as React from 'react' }
只是将foo
设为类型any
,但仍然会遇到相同的错误。似乎无论哪种编译器(webpack,其他编译器)都无法在types
文件夹
如何为项目添加自定义类型声明?
答案 0 :(得分:0)
这是一个真实的用例示例。 我设法将kendo-ui-core集成到CRA + Typescript中。
问题是kendo-ui-core没有键入,即键入具有不同的名称:@types/kendo-ui
Typescript抱怨没有类型定义
要解决此问题,请在您的 / 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;
}
答案 1 :(得分:-1)
这有效:
/* create src/CustomTypes.ts */
namespace MyCustomType {
export type foo = number;
}
export default MyCustomType;
使用如下:
import MyCustomType from "src/CustomTypes";
const num: MyCustomType.foo = 123;