TS的数据类型
布尔值、数字、字符串、数组、元组、枚举、any、void、null和undefined、never、object
1) 数组
有两种方式可以定义数组
<1>可以在元素类型后面接上[]
let list:string[] = ['1','2','3']
<2>使用数组泛型,Array<元素类型>
let list:Array<string> = ['1','2','3']
- 枚举 enum( 枚举用于表示固定的几个取值)
enum color {blue,red,green}
let b:color = color.red
- any (任意类型) 【会让Ts类型保护机制失效,尽量不要使用】
- unknown(类型安全的any)
- void 表示没有类型
function fn():void{
console.log("hello");
}
- never (never类型表示的是那些永不存在的值的类型)
- 元组 (元组类型[string, number, boolean])
let list:[string, number, boolean]; // 表示定义了一个名称叫做list的元祖, 这个元祖中将来可以存储3个元素, 第一个元素必须是字符串类型, 第二个元素必须是数字类型, 第三个元素必须是布尔类型
list = ['a', 1, false]; // list = ['a', 1, false, false]; // 超过指定的长度会报错
list = ['a', 1, false];
console.log(list);
8) 接口类型 interface (当一个对象类型被多次使用时,一般会用接口来描述对象的类型,达到***复用***的效果)
interface Ipsrson {
name:string
age:number
sayHi():void
}
let person:Ipsrson = {
name:'Asan',
age:19,
sayHi(){}
}
Ts 如何编译成Js
1) 我们可以在终端用tsc 文件名
2) 我们可以在终端用tsc 文件名 -w 监听ts文件的改变去生成js
3) 我们可以在终端用tsc(前提是我们文件配置中有tsconfig.json) 直接去把所有TS文件生成js (-w 则会监视所有文件)
tsconfig.json
{
"include":["./src/**/*"], // 用来指定哪些ts文件需要被编译 ** 代表任意文件夹名称 * 代表任何Ts文件
"exclude":["nodde_modules","bower_components","jspm_packages"], // 用来指定哪些ts文件不需要被编辑
"extends":"./configs/base" , // 定义被继承的配置文件
"files":[ // 指定被编译的文件列表,它是由文件名来指定 不是由路径
"XXX.ts",
"CCC.ts"
],
"compilerOptions":{ // 用来完成对编译的配置
"target":"es6", // target 用来指定TS被编译为的版本
"module":"es6", // module 指定要使用的模块化的规范 他的值有:'none' , 'commonjs','amd','system','umd','es6','es2015','es2020','esnext'
//"lib":[ // 用来指定项目中需要用到的库(在浏览器中运行,我们一般不需要改) ] ,
// "outDir":"路径", 用来指定编译后文件所在的目录
// "outFile":"路径", 所有的全局作用域中的代码会合并成同一个文件中
"allows":false, // 是否对我们的Js文件进行编译,默认为false
"checkJs":false, // 是否检查js代码是否符合语法规范
"removeComments":false, // 是否移除注释
"noEmit":false, // 不生产编译后的文件
"noEmitOnError":false, // 当有错误时不生成编译后的文件
"strict":false, // 所有严格检查的总开关
"alwaysStrict":false, // 用来设置编译后的js文件是否使用严格模式,默认false
"noImplicitAny":true, // 不允许隐士any类型
"noImplicitThis":false, // 不允许不明确类型的this
"strictNullChecks":true, // 严格的检查空值
}
}