TypeScript需要进行类型检查

时间:2015-02-16 18:26:51

标签: 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变量。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

import关键字与require代替var

一起使用
import chai = require('chai');

如果您还没有

,请使用--module commonjs进行编译

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

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

答案 1 :(得分:3)

TypeScript 3.9 Beta 发布以来,可以使用 - name: Add Timeout Entry if not present become: yes lineinfile: path: "/backup/backup.sh" insertbefore: BOF state: present line: 'export TMOUT=50000' 进行键入

示例:

require

“ TypeScript现在会自动检测您正在使用的导入类型,以保持文件样式的简洁和一致。”

参考https://devblogs.microsoft.com/typescript/announcing-typescript-3-9-beta/