向Angular添加自定义类型

3

我正在尝试将自定义类型文件添加到我的Angular项目中。我在Angular项目(使用CLI创建)的src文件夹中创建了typings.d.ts文件。然后在我的tsconfig.json文件中,我有以下内容:

"types": [
    "src/typings.d.ts"
]

无论我尝试什么,总是会出现这个错误。然而,根据我在过去一小时内谷歌的内容,types用于特定文件,而typeRoots用于类型目录。

ERROR in ./src/app/profile-mobile/profile-mobile.component.ts

Module not found: Error: Can't resolve 'src/typings' in 'C:\Users\errat\Documents\Projects\chat\src\app\profile-mobile'

另外奇怪的是:Error from chokidar (C:\): Error: EBUSY: resource busy or locked, lstat 'C:\DumpStack.log.tmp'

虽然添加了类型文件后这些错误就不会发生,但只要在Angular组件中导入Type并使用它(即使我不需要使用它),这些错误就会出现。


据我所知,你可以在typeRoots属性中指定文件:"typeRoots": [ "node_modules/@types", "../src/typings.d.ts" ],但是你需要明确地包含node_modules/@types。如果不这样做,它们可能会被排除在外。 - undefined
1个回答

4
在 TypeScript 的文档中,有这样一段话:

默认情况下,所有可见的 "@types" 包都会包含在您的编译中

因此,您甚至不需要将声明添加到 tsconfig.json 中,只要在根目录下有这个声明,它就可以默认工作。
您遇到的错误是因为您尝试将声明文件 (*.d.ts) 导入到组件中,这样是行不通的。因为声明文件是一种单独的文件类型,您不能像导入普通的 esnext 模块那样导入它们。
如果您有一些想要使用的接口,只需创建常规的 *.ts 文件,然后像常规模块一样使用 import ... from ... 进行导入即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接