Hot*_*f68 50 javascript typescript
有没有办法告诉typescript使用某个文件(或文件集)作为编译的所有内容的定义?
我目前唯一的选择是在每个打字稿文件中添加这样的东西(看起来很笨重):
/// <reference path="DefinitelyTyped/requirejs/require.d.ts" />
Run Code Online (Sandbox Code Playgroud)
Dyn*_*lon 37
使用TypeScript的内部模块系统时,可以避免<reference>
代码中包含任何标记.我个人这样做是因为我不想在代码中编码路径(实际或绝对),因为我经常移动东西.
一种方法是确保在编译期间将所有必需的声明文件和TypeScript源文件作为参数传递给编译器.
使用一饮而尽连同一饮而尽,打字稿简化了这一任务.您可以设置noExternalResolve
在gulp-typescript
为true,并创建一个把你所有.d.ts文件与源和管道下来的编译器一起大口的任务.当您将tsd插入堆栈时,您只需要传递tsd.d.ts
包含对通过其安装的所有其他定义文件的引用的文件tsd
.
TypeScript> = v1.5的UPDATE:您可以使用tsconfig.json文件,编译器将获得正确的类的排序.这消除了全部使用的需要gulp-typescript
.您可以选择将所有文件明确列在tsconfig.json
文件中,也可以完全忽略该files
属性以包含*.ts/*.tsx
所tsconfig.json
驻留目录中的所有文件(包括所有子文件夹).
示例tsconfig.json
可能如下所示:
{
"compilerOptions": {
"target": "ES5",
"module": "commonjs",
"lib": [ "es5", "es2015.promise", "dom" ]
},
"include": [
"src/**/*.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
juF*_*uFo 10
到目前为止我学到的是/// <reference> -带参考注释的模块不是一个好方法.
例如:如果您有文件Foo和文件栏.两个文件都使用jquery,但只有文件Foo对jquery有引用注释.如果由于某种原因删除了文件Foo,则文件栏将被破坏,因为缺少引用.
如果您使用的是TypeScript> = 2.0最好在tsconfig.json中的"files"部分下定义TypeScript定义文件(.d.ts).
这看起来像这样:
{
"compileOnSave": true,
"compilerOptions": {
"noImplicitAny": true,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"target": "es5",
"outDir": "./Scripts/"
},
"files": [
"./src/foo.ts",
"./src/bar.ts",
"./Scripts/typings/jquery/jquery.d.ts",
"./Scripts/typings/jqueryui/jqueryui.d.ts",
"./Scripts/MicrosoftMaps/Microsoft.Maps.d.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
在示例中经常使用///指令(引用注释)来快速入门,但这不是最佳实践.许多示例来自版本<TypeScript 2.0.