我正在使用没有声明文件types
的第三个库。因此,我需要在项目中添加库的类型。
但是我尝试了很多次,结果总是错误的。
这是我的tsconfig.json
:
{
"compilerOptions": {
"baseUrl": ".",
"esModuleInterop": true,
"module": "commonjs",
"moduleResolution": "node",
"removeComments": true,
"sourceMap": true,
"target": "esnext",
"types": ["node"],
"strict": true,
"paths": {
"@/*": ["src/*"]
}
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/node_modules/*", "**/*.spec.ts"]
}
我在根项目中创建了一个global.d.ts
文件,并声明了该模块:
declare module 'matrix-js-sdk' {
interface Promise {
done(callback: () => void): void
}
interface Client {
joinRoom(roomId: string): Promise
}
export function createClient(options: {
baseUrl: string
accessToken: string
userId: string
}): Client
}
导入第三个库:
import sdk from 'matrix-js-sdk'
// error: Cann't find the declaration file for the module 'matrix-js-sdk'
此外,我还尝试创建root/src/@types/matrix-js-sdk/index.d.ts
文件并编写声明:
interface Promise {
done(callback: () => void): void
}
interface Client {
joinRoom(roomId: string): Promise
}
export function createClient(options: {
baseUrl: string
accessToken: string
userId: string
}): Client
但是它永远都行不通。
==================更新=================== < / p>
现在我可以在src/global.d.ts
(不是根项目)中编写声明,并引用它以包含在编译中:
/// <reference path="../global.d.ts" />
import sdk from 'matrix-js-sdk'
但是不建议使用reference
语法,我尝试在 tsconfig.json 的src/global.d.ts
字段中包含files
:
"files": ["src/global.d.ts"],
"include": ["src/**/*"],
"exclude": ["node_modules", "**/node_modules/*", "**/*.spec.ts"]
它再次引发相同的错误:
Could not find a declaration file for module 'matrix-js-sdk'
另一个,src/@types/matrix-js-sdk/index.d.ts
仍然不起作用(我更喜欢使用这种方式)。
答案 0 :(得分:1)
你能不能放
declare module 'matrix-js-sdk' {
interface Promise {
done(callback: () => void): void
}
interface Client {
joinRoom(roomId: string): Promise
}
export function createClient(options: {
baseUrl: string
accessToken: string
userId: string
}): Client
}
在src/@types/matrix-js-sdk/index.d.ts
声明文件中也没有默认导出,因此import sdk from...
会给出一些与此相关的错误。