npm i typescript -g
不能直接运行,需要编译成 js 才可以,意思是 typescript compiler,并且只有在全局安装了 typescript 才可以执行。
tsc 对应的ts代码文件
q: 当前编译环境下,存在同名的函数会报错?
a: tsc --init 生成配置文件
q: 代码编写的时候能否帮助我们自动编译?
a: tsc --watch
tsc -noEmitOnError 对应的ts代码文件
ts 很多情况下会帮助我们自动推断类型,当类型系统能够帮我们推断出类型的话,我们最好不需要添加类型注释了。
在 ts 里加了很多类型注释的代码,都会在编译的时候自动删除掉。
修改配置文件 tsconfig.json
/* Language and Environment */
"target": "es2016",
// 默认以 ES3 作为目标,但是大多数浏览器都支持 ES2015(es6),可以很安全地将更高的版本设置为目标。
类型是可选的,推理采用最宽松的类型,而且不检查潜在的 null、undefined,应该始终打开这些严格检查。 noImplicitAny: true [不允许出现隐式的 any 类型] strictNullChecks: true [不允许出现 null、undefined 类型]
/* Type Checking */
"strict": true, /* Enable all strict type-checking options. */
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
// "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
修改成当前文件夹下的 src、dist 文件夹
/* Modules */
"rootDir": "./src",
/* Emit */
"outDir": "./dist",
string、number、boolean 特殊的内置类型:Date 可以大写
- type[] []前面加一个 ts 常用的类型
- Array 关键字<ts 的常用类型> (泛型的写法)
当一个值的类型是 any 时,可以访问他的任何属性,将它分配给任何类型的值,或者任何其它语法上的东西都是合法的。
冒号+类型,根据习惯,最好加一个空格
指定函数的输入值和输出值的类型,参数类型注释(形参) + 返回值类型注释(void) void 意思就是没有返回值,上下文类型(函数发生在上下文通知他应该具有什么类型上面)
参数的类型注释是对象类型
多个类型之间用 | 隔开
想要多次使用同一个类型,需要重复书写多次,单独定义一个类型,可以避免重复使用
我们将 ts 称为结构类型的系统,其原因就是 ts 只关心类型的结构和功能,定义对象的另外一种方式
有时候我们会获取一个值,这个值 ts 并不知道它具体的类型是什么,我们可以指定具体的类型,利用 as 更加具体的类型,或者<更加具体的类型>
除了一般类型 string 和 number,我们可以在类型的位置引用特定的字符串和数字。比如 var、let、const。去细化变量类型的时候很用用。
js 有两个原始的值:null 和 undefined,分别表示不存在和未初始化的值,ts 有两个对应的同名类型。
是 ts 添加到 js 的一项功能,它允许描述一组值,这个值可能是一组命名常量之一,与大多数的 ts 功能不同,这个不是 js 类型级别里边添加的内容,而是添加到 ts 语言和运行时的内容。因此你确定确实需要枚举累来做些事情,否则也没有必要使用它。只要定义了一个值的默认值,其他的值会默认递增 1。
js 一些较新的原语,ts 也实现了。比如 Symbol()、bigint。