首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么TypeScript没有在这里抛出错误?

为什么TypeScript没有在这里抛出错误?
EN

Stack Overflow用户
提问于 2019-07-11 20:58:10
回答 1查看 1.4K关注 0票数 1

我们正在converting一个从JavaScript到TypeScript的Node.js模块。在初始转换中,some code错误地将类型定义为string,而该类型应为any。(它被传递给express的res.send(),它接受any。)

以下是代码的相关子集:

代码语言:javascript
复制
namespace RateLimit {
  export interface Options {
    message: string; // <-- should be any
  }
}

function RateLimit(incomingOptions: Partial<RateLimit.Options>): RateLimit {
  // ...
}

export = RateLimit;

其他用户在这里尝试使用非字符串时,reported会得到一个错误:

代码语言:javascript
复制
node_modules/express-rate-limit/dist/express-rate-limit.d.ts:13:9
    13         message: string;
               ~~~~~~~
    The expected type comes from property 'message' which is declared here on type 'Partial<Options>'

    at createTSError (/Users/xxx/IdeaProjects/xxx/node_modules/ts-node/src/index.ts:245:12)
    ...

修复看起来很简单,但在修复它之前,我为这个bug创建了一个摩卡test

代码语言:javascript
复制
require("ts-node/register");
const rateLimit = require("../lib/express-rate-limit.ts");

describe("express-rate-limit typescript typings", function() {
  it("should work with non-string messages", () => {
    rateLimit({
      message: { json: "object" }
    });
    rateLimit({
      message: Buffer.from("I'm a buffer!")
    });
  });
});

但是,测试通过了!我想可能和摩卡咖啡有关,所以我试着跑

代码语言:javascript
复制
npx tsc test/typings-test.ts

但是,这也是没有错误的。

我还尝试在编译后的js中使用require(),而不是包含ts源& ts-node,但这个变体也通过了。

那么,我错过了什么?为什么typescript没有在这些不匹配的类型上抛出错误?

EN

回答 1

Stack Overflow用户

发布于 2019-07-11 23:55:31

@artem给了我90%让它工作所需的东西。有两个问题:

1)在解析测试文件之前必须使用ts-node/register,否则就来不及发现问题了。通过在我的package.json中的mocha命令中添加一个--require ts-node/register来修复它:

代码语言:javascript
复制
{
  "scripts": {
    "test": "eslint . && mocha --require ts-node/register test/*-test.*",
  }
}

2) TypeScript只检查imported文件的类型,所以我不得不将REQUIRE行改为:

代码语言:javascript
复制
import rateLimit = require("../dist/express-rate-limit");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56989794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档