ts的配置文件tsconfig.json,包含输入文件列表和编译选项
教程地址
Introduction
TypeScript具有类型系统,且是JavaScript的超集。 它可以编译成普通的JavaScript代码。 TypeScript支持任意浏览器,任意环境,任意系统并且是开源的。
快速上手
了解typescript
- 编译代码
1
2
3
4
5
6//greeter.ts
function greeter(person) {
return "Hello," + person
}
let user = "Jane User"
document.body.innerHTML = greeter(user)
编辑器运行1
tsc greeter.ts
- 类型注解
typescript提供静态的代码分析,分析代码结构和提供的类型注解,e.g:person:string
代码错误仍可以执行 接口 interface
1
2
3
4
5interface Person {
firstName: string;
lastName: string;
}
// person:Person类:支持基于类的面向对象编程,可定义一个构造函数和一些公共字段
构造函数的参数上使用public等同于创建了同名的成员变量
类和接口可以一起共同作用
- 运行Typescript应用
1
2 //greeter.html
<script src="greeter.js"></script>
ASP.NET Core
Augular 应用
ASP.NET 4
Gulp
Gulp工程,Typescript文件放在src文件夹下,经ts编译生成的目标文件放在dist目录下
- 初始化工程
init``` 1
2
3
4
5
6
7
8入口文件为/dist/main.js
2. 安装依赖: typescript gulp gulp-typescript
gulp-typescript为一个插件,能够访问Typescript编译器
3. src下创建main.ts
4. 根目录下新建tsconfig.json:添加compilerOptions
5. 创建gulpfile.js
6. 测试
更改代码后
gulp1
![avatar]("../picture/gulp1.png")
node dist/main.js1
2
3
4
5
6返回运行结果
### 向代码里添加模块
导入模块:构建代码后再添加一些混入的模块
1. 在tsconfig.json中file添加模块src/greet.ts
2. 导入模块
import { sayHello } from “./greet”;1
2
3
4
5
### Browserify:把所有的模块捆绑成一个Javascript文件
~支持Node.js的CommonJS模块~
1. 安装Browserify,tsify和vinyl-source-stream
tsify为Browserify的一个插件,访问Typescript编译器;vinyl-source-stream将Browserify的输出文件适配成gulp能够解析的格式
//gulpfile.js
gulp.task(“default”, [“copy-html”], function () { //默认先调用copy-html,作为default的依赖项
return browserify({
basedir: ‘.’,
debug: true,
entries: [‘src/main.ts’],
cache: {},
packageCache: {}
})
.plugin(tsify) //使用tsify插件调用Browserify
.bundle()
.pipe(source(‘bundle.js’)) //source为vinyl-source-stream别名,输出文件为bundle.js
.pipe(gulp.dest(“dist”)); //文件生成在dist文件夹中
});1
2
3
4
5
6
7
8
9
10
112. 调试 gulp
### Watchify,Babel,Uglify
Watchify:;Babel:;Uglify:;
1. Watchify:启动Gulp并保持运行状态,自动编译
执行gulp
2. Babel为编译器,将ES2015及以上的版本转换为ES5和ES3
类似于Uglify,Babelify也会混淆代码,所以需要vinyl-buffer和gulp-sourcemap,需要将.ts添加到Babelify选项
更改tsconfig.json中compilerOptions-target为ES2015,compilerOptions-target定义的为Typescript生成的格式,Babel会将Typescript生成的ES2015编译为es5
3. Uglify压缩代码
Uglify用以混淆代码,安装vinyl-buffer和gulp-sourcemaps来支持sourcemaps
gulp.task(“default”, [“copy-html”], function () {
return browserify({
basedir: ‘.’,
debug: true,
entries: [‘src/main.ts’],
cache: {},
packageCache: {}
})
.plugin(tsify)
.bundle()
.pipe(source(‘bundle.js’))
.pipe(buffer()) //调用自身buffer
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(uglify())
.pipe(sourcemaps.write(‘./‘))
.pipe(gulp.dest(“dist”));
});1
2
3```
gulp //检查bundle.js是否被压缩
cat dist/bundle.js ////# sourceMappingURL=bundle.js.map
React和webpack
初始化项目
ts文件放在src文件夹下,通过ts编译器变异,经webpack处理,生成bundle.js文件放在dist目录
安装依赖 安装typescript为一个开发依赖
webpack将所有代码和可选择地将依赖捆绑为一个单独的.js文件
react
react-dom
@types/react
@types/react-dom
后两个为前两个的声明文件,并非所有的包都包含了声明文件,所以ts会检查
awesome-typescript-loader
source-map-loader
第一个让webpack使用(ts的标准配置文件)tsconfig.json编译ts代码
第二个使用ts输出的sourcemap文件来告诉webpack什么时候生成自己的sourcemaps
添加代码
import组件使用相对路径,否则ts只会在node_modules中寻找
添加webpack配置文件
创建webpack.config.js
React
create-react-app
create-react-app my-app –scripts-version=react-scripts-ts