TypeScript 需要类型检查

标签 typescript require

我正在使用 TypeScript v1.4.1 并希望需要一个外部模块(在本例中为“chai”)并对其进行类型检查。

但是,我遇到了与此代码的某种命名冲突:

/// <reference path="../typings/node/node.d.ts" />
/// <reference path="../typings/chai/chai.d.ts" />
/// <reference path="../typings/mocha/mocha.d.ts" />

var chai = require("chai");

var expect = chai.expect;
var assert = chai.assert;

describe("TEST", () =>
{
   it("true should be true", (done)=>
   {
      expect(true).to.be.true;
      done();
   });
});

有了这个定义文件:

declare module chai {
   ...
}
declare module "chai" {
   export = chai;
}

编译出现这些错误:

test/test.ts(5,5): error TS2300: Duplicate identifier 'chai'.
typings/chai/chai.d.ts(6,16): error TS2300: Duplicate identifier 'chai'.

似乎我唯一的选择是在 test.ts 中重命名我的 chai 变量名。这看起来很笨重,并且不会对重命名的 chai 变量的使用进行类型检查。

有什么建议吗?

最佳答案

使用 import使用 require 代替 var

的关键字
import chai = require('chai');

如果你还没有用--module commonjs编译

或者,如果出于某种原因您不希望测试代码成为外部模块,添加类型注释将保留类型检查。

var c: typeof chai = require("chai");

关于TypeScript 需要类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28547970/

相关文章:

typescript - 如何从另一个方法创建一个方法?

parsing - 将 Browserify 与 Reactjs 结合使用

javascript - RequireJS, $.Deferred 怎么办?

typescript - 如何在 TypeScript 中使用模板文字类型作为返回类型属性

typescript - 为什么我们在 Rxjs 中需要 Tap 运算符

TypeScript 分布式条件类型 - 附加类型参数约束

typescript - 元素隐式具有 'any' 类型,因为类型 'Window' 没有索引签名?

Perl - 通过包含 require 指令的 SSH 远程运行脚本

javascript - Node 模块的可能结构

ruby - Ruby 救援语句是否适用于 require?