我是Typescript的新手,我正在尝试编写一个代码,该代码将使用最新的@sendgrid/mail
npm包发送电子邮件(SO中的大多数回复都是关于“旧的”sendgrid
npm包)。它已经包含一些类型定义,但--noImplicitAny
标志设置为true
我看到一些sendgrid内部包(如@sendgrid/helpers
)的错误,其中定义了一些隐式any
。对我而言,听起来像sendgrid的类型定义有点破碎。我的问题是:在第三方库中某些类型的定义被破坏(或者定义了隐式any
)时,我可以做些什么呢?我想在--noImplicitAny
中保留tsconfig.json
标志?是否有选项可以告诉编译器忽略特定的第三方库错误?
以下是我的代码:
main.ts(简化):
import sgMail = require("@sendgrid/mail");
sgMail.setApiKey("{ApiKey}");
let msg = {
"to": "{recipient}",
"from": "{sender}",
"subject": "test",
"text": "test"
};
sgMail.send(msg);
tsconfig.json:
{
"compilerOptions": {
"target": "es2016",
"module": "commonjs",
"outDir": "./dist/",
"strict": true,
"noImplicitAny": true,
}
}
的package.json:
{
"main": "main.js",
"directories": {
"test": "test"
},
"dependencies": {
"@sendgrid/mail": "^6.1.4"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "clear && tsc && node dist/main.js"
}
}
我看到的错误:
node_modules/@sendgrid/helpers/classes/email-address.d.ts(11,3): error TS7010: 'fromData', which lacks return-type annotation, implicitly has an 'any' return type.
node_modules/@sendgrid/helpers/classes/email-address.d.ts(16,3): error TS7010: 'setName', which lacks return-type annotation, implicitly has an 'any' return type.
node_modules/@sendgrid/helpers/classes/email-address.d.ts(21,3): error TS7010: 'setEmail', which lacks return-type annotation, implicitly has an 'any' return type.
当我将--noImplicitAny
设置为false
时,一切正常。
答案 0 :(得分:0)
事实证明,解决第三方库问题的方法是在typescript编译器中设置skipLibCheck
标志。那样.d.ts
个文件就不会被检查。问题是 - 它会影响所有文件。如果只检查一个.d.ts
文件,则没有简单的选项。