说明:基于已经有必定基础了,接下来javascript
1.展现编译错误的结果会根据状况经过继续截图或贴在代码的后面;java
2.本章节及以后章节会以版本号递增方式来记录学习过程,以前是时间(年-月-日)的方式;git
3.加点工程化的东西,这个会逐渐优化,便于将精力专一于所学习内容上;github
4.对于提升学习效率这块,若是你有更好的思路或方法,还请在评论区分享下,帮助他人和我一块儿进步;typescript
package.json
(notes 目录下)npm init -y
复制代码
// notes/package.json { "name": "notes", "version": "0.0.4", "description": "辅助学习typescript", "main": "index.js", "scripts": { "build": "tsc --outDir $npm_package_version/build $npm_package_version/*.ts", "watch": "tsc -w $npm_package_version/*.ts", "createDir": "mkdir $npm_package_version" }, "keywords": [], "author": "ruizhengyun <ruizhengyun@gmail.com> (https://github.com/ruizhengyun)", "license": "MIT" } 复制代码
version
递增下便可;npm run createDir
来建立这个版本的示例文件夹;npm run build
能够实时监听当前版本目录下的 *.ts
文件并将其编译到当前版本 build
文件目录下(这里有个小问题就是以后新增文件不能监控到,你的重启下服务);要是没有明确的指定类型,那么 TS 会推断出一个类型,这是依照类型推论(Type Inference)的规则来的。npm
// inference.ts let inference = 'ts'; inference = 18; // 0.0.4/inference.ts:2:1 - error TS2322: Type '18' is not assignable to type 'string'. // 2 inference = 18; 复制代码
有人问了,这段代码写法上没有任何问题啊?为何有错?json
很差意思,如今你在 TS 的世界里,就得按照这里的规则来。既然来学 TS,咱就得放下包袱(以往一些经验)。bash
出现这问题的缘由在于TS 在变量没有明确指定类型的状况下会推测出一个类型(类型推论)。markdown
能够经过下面这种方式来理解上面的写法oop
// inference.ts let inference: string = 'ts'; inference = 18; // 0.0.4/inference.ts:2:1 - error TS2322: Type '18' is not assignable to type 'string'. // 2 inference = 18; 复制代码
刚刚在定义的时候就赋值了,那若是一开始就不定义。以前的经验告诉咱们,类型是 any
,那后面赋值字符串,而后再赋值数字均可以咯。Have a try ~
// inference2.ts let inference2; inference2 = 'ts'; inference2 = 18; 复制代码
编译后
// build/inference2.js var inference2; inference2 = 'ts'; inference2 = 18; 复制代码