Requirejs “在哪里?”;使用“严格的”;在使用TypeScript和AMD模块时转到

Requirejs “在哪里?”;使用“严格的”;在使用TypeScript和AMD模块时转到,requirejs,typescript,amd,Requirejs,Typescript,Amd,我使用的是TypeScript版本1.0.1.0 当一起使用TypeScript和AMD模块时,我应该在哪里写“use strict”语句?它应该高于还是低于进口 我可以把它写在导入上面,这样这个类型脚本代码: "use strict"; import Backbone = require('backbone'); class MyClass extends Backbone.View<Backbone.Model> { } export = MyClass; 或者我可以把“使用严

我使用的是TypeScript版本1.0.1.0

当一起使用TypeScript和AMD模块时,我应该在哪里写“use strict”语句?它应该高于还是低于进口

我可以把它写在导入上面,这样这个类型脚本代码:

"use strict";
import Backbone = require('backbone');
class MyClass extends Backbone.View<Backbone.Model> { }
export = MyClass;
或者我可以把“使用严格”的声明放在我的导入下面。因此,这个类型脚本:

import Backbone = require('backbone');
"use strict";
class MyClass extends Backbone.View<Backbone.Model> { }
export = MyClass;

哪一个是正确的?即使语句完全丢失,TSLint也不会报告冲突。这可能是TSLint中的一个bug吗?

第一个变体导致了整个脚本的严格性:

"use strict";
import Backbone = require('backbone');
class MyClass extends Backbone.View<Backbone.Model> { }
export = MyClass;
“严格使用”;
导入主干=需要(“主干”);
类MyClass扩展主干。视图{}
导出=MyClass;
第二种方法将严格的范围仅限于(生成的)功能:

import Backbone = require('backbone');
"use strict";
class MyClass extends Backbone.View<Backbone.Model> { }
export = MyClass;
import Backbone=require('Backbone');
“严格使用”;
类MyClass扩展主干。视图{}
导出=MyClass;

在实践中,这对您的情况没有什么影响,因为这只是包含自动生成的“扩展”代码的严格声明与否之间的区别,而自动生成的代码是严格符合的。

对TSLint有什么看法?在我看来,这应该作为“使用严格”违规的一部分进行验证。如果TSLint在任何方面都有问题,我都会感到惊讶。我认为规则是,
“use strict”
应该位于模块的顶层-因此这取决于TSLint对“顶层”的确切定义。@Fenton“自动生成的代码是严格兼容的。”,事实上不是这样,
扩展
帮助程序中的
this.constructor=d
行将自动失败,
.constructor
属性在严格模式下不可分配。
"use strict";
import Backbone = require('backbone');
class MyClass extends Backbone.View<Backbone.Model> { }
export = MyClass;
import Backbone = require('backbone');
"use strict";
class MyClass extends Backbone.View<Backbone.Model> { }
export = MyClass;