Typescript 类型推论

说明:基于已经有必定基础了,接下来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;
复制代码

本次代码 Github

你能够...

上一篇:Typescript 进阶类型

下一篇:Typescript 联合类型

目录:Typescript 小书之入门篇

相关文章
相关标签/搜索