ts实质上是基于js的语言 所以他的语法和js也大同小异
mac 安装 typescript sudo npm i typescript -g
查看安装的版本 tsc -v
解决 ts和js冲突的问题 tsc --init
自动编译 tsc --watch
发出错误严格模式 tsc --noEmitOnError **显示申明**
function greeet(person: string, date: Date) {
console.log(`${person}-${date}.`)
}
greeet(‘小芊’, new Date()) **隐士申明**
function greeet(person: any, date: any) {
console.log(`${person}-${date}.`)
}
greeet('小芊', new Date()) `
降级编译 tscconfig.json’修改属性 targert:“es5”
严格模式
tscconfig.json'修改属性 strict: true,noImplicitAny:true,strictNullChecks:true
strict: true :类型验证
数组定义 `
let arr: number[] = [1, 2, 3] let arrs: Array = [1, 2, 3]
在这里插入代码片
`
函数定义 retutn定义
function getnumber():number{
return 23
}。 参数定义
function getnumber():number{
return 23
}
对象定义
function getnumbers(obj:{x:number,y:string}):number{
return 23
}
getnumbers({
x:1,
y:'11'
})
联合类型
obj:{x:number,y:string | number}。y:string[]. : 表示字符串数组
定义别名
type point ={x:number,y:string | number}
function printcoor({pt:point}){} printcoor({pt:1})
interface (接口 定义对象类型的另一种方式)
interface可以重复定义 会叠加。
interface animal {
name:string
}
interface bear extends animal {
number:1
}
const obj:bear={
name:'',
number:1
}
type 类型扩展
type不可以重复定义 会报错
type point ={x:number,y:string | number} &{
z:string
}
function printcoor(obj:point){}
printcoor({x:1,y:2,z:''})
类型断言 定义成不太清楚的类型 而不是any 就失去了ts的意义
const x = ('hello' as unknown)
文字类型
person: ‘1’
非空断言 (确定它不是那个类型 有问题)
console.log(x!.toFixed())
枚举
enum Direction {
up = 1,
a,
b
}
bigint 非常大的整数。symbol 全局唯一引用
const number:bigint = 100n
类型缩小 使用if语句