带有Typescript(设置了noImplicitAny标志)的@ sendgrid / mail包用法

时间:2017-10-01 09:54:21

标签: typescript sendgrid

我是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时,一切正常。

1 个答案:

答案 0 :(得分:0)

事实证明,解决第三方库问题的方法是在typescript编译器中设置skipLibCheck标志。那样.d.ts个文件就不会被检查。问题是 - 它会影响所有文件。如果只检查一个.d.ts文件,则没有简单的选项。