TS 其实是 js 的超集 , 用于解决一些js 存在的问题 ,由微软提供的为 js 语言的增强

| TypeScript | JavaScript |
|---|---|
| 作为JS的一种增强 解决大型项目的代码复杂性 | 脚本语言 ,用于创造动态网页和编写一些脚本 |
| 强类型,支持静态,动态类型 | 动态弱类型语言 |
| 可以在编译期间发现纠正错误 | 只能在运行时发现错误 |
| 不允许改变变量的数据类型 | 变量可以复制成不同类型 |
ts 为我们带来了什么

var value : [数据类型]
enum f{}
function add(x:number[]) : number
function add(x:string[]): number
interface Person{
name : string
age: number
}
const p1 : Person{
name: 'lin',
age:18
}
p1.name
p1.age
// key string
interface RandomKey{
[propName:string]:string
}
cosnt obj : RandomKey{
a:"hello",
b:"world"
}
class a {
public name : string
}
class b extends a{}
let num number|string
num = 8
num = "eight"
interface p {
name:string
}
type stu = P &(grade:number)
const student :stu
student.name
student.grade
function getlist(arg:number|string): number{
const str = arg as string
}
泛型的定义是需要考虑灵活性和可重用性的
function print <T>(arg:T):T{
return arg
}
泛型工具类型
interface p{
name:string
age:number
}
type k1 = keyof p //'name'|'age'
后端接口类型约束
import axios from 'axios'
interface API{
'book/detail':{
id:number
},
'/book/comment':{
id:number,
comment:string
}
}
function request<T extends keyof API >(url:T,obj:API[T]){
return axios.post(url,obj)
}
request( '/book/comment',{
id:1,
comment:"good!"
})