类型断言,可以用来解析变量的实际的类型
语法 as 类型
tsc 文件名.ts 启动Ts转换JS
any 任意类型 可以是任意类型的数据
let aq = true
let ad: any;
ad = "12345" 可以将自己的类型赋值给其它变量的的类型
aq = ad
console.log(typeof aq)
unknown 表示未知类型的变量
unknown 类型的变量 不能直接辅助给其它变量
let as: unknown;
as = 10 ;
as = "hello"
as = true
e = as × × × × 不能直接赋值
void 表示空 再函数中 可以表示没有返回值的函数
never 表示永远不会返回结果
let ar: never;
console.log(typeof ar)
let ar: void ;
console.log(typeof ar)
转为JS为 undefined
var ar;
console.log(typeof ar);
object 对它没有任何限制 Js中一切皆对象
let obj = {}
console.log(typeof obj)
指定对象的属性和类型
let b: {num: string} b指向一个对象 且要有name属性 为字符
b = {num: "123"}
===============================================》》》》
let b: {num: string, age?: number}
在属性名后面加一个问好 表示这个属性是可以选的 快写可不写
b = {num: "123"}
let b: {num: string, age?:18} 将age分配给18且只能是18
b = {num: "123", age: 18}
console.log(b)
[ propName: string ] : string 表示属性必须是字符串,值也是字符串
let c: {[sos: string]: any}
表示属性必须是字符串,值是任意类型
c = {num: "123", age: "18"}
console.log(c)
设置函数结构的类型声明
语法: ( 形参:类型, 形参: 类型 )=> { 返回值 }
let g: ( a: number, b: number ) => number
g = function fn(n1:number, n2: number) {
return 10
}
console.log(g(11,23))
数组Array
let e: string[]; 表示e 声明的数组里面只能存放字符
e = ['2131']
表示数值类型的数组 语法 w: 数组<存放的数据类型>
let w: Array<number>
w = [1,2]
元组, 元组就是产固定长度的数组 转为js为object
let h: [*string*, *number*] /* 定义了一个元组 */
h=["12",123]
console.log(h)
console.log(typeof h)
枚举 enum
enum Gendedr{
Male = 0,
Fmale = 1 /*枚举里面两个值 0 是男 1 是女*/
}
let i:{name: string, genet: Gendedr};
i = {
name: "五条悟",
genet: Gendedr.Male 返回一个 0
}
console.log(i.genet)
| 或 & 且
JS中的&&且 JS中的或 ||
TS的编译
tsc 文件名.ts
tsc 文件名.ts -w 会监听文件变化
创建一个tsconfig.json 配置文件 ts会根据它来进行编译
tsc 将文件夹所有ts转为js
指执行tsc -w 监听文件夹所有的文件
在 JSON 文件中
”include“ 表示指定文件执行编译
{
"include": [ 指定你要tsc 编译的文件
"./src/** **任意任意目录 * 表示任意文件
]
}
excluded 表示不包含 指定不转换js的文件
compilerOptions 编译器的选项
strict 所有严格检查的开关
" strict ": true 如果true 就表示开
target : 指定ES版本
compilerOptions : {
"target": ES6 指定ES版本 ES3 ES6 ESNext
}
( 如果不知道的版本 写错会有相关提示 ES2015也就是ES6 )