vite官方命令
npm create vite@latest 项目名 -- -- template vanilla-ts
function add(a: number, b: number) {
return a + b;
}
add(1, 2)
let res: number
res = add(1, 2)
const add2 = (a: number, b: number) {
return a + b;
}
add2(3, 4)
type AddFn = (a: number, b: number) => number
const add3: AddFn = (a, b) => {
return a + b;
}
add3(5, 6)
注意:在写业务代码时,使用上面两种注解;一般写库的时候会用整体注解
注意事项:在JS中如果没有返回值,默认返回时undefined,在TS中void和undefined不是一回事,
undefined在TS中时一种明确的简单类型,如果指定返回值为undefined,
那返回值必须时undefined类型
interface GoodsType {
id: string
price: number
}
第一种
interface DisGoodsType {
id: string
price: number
disPrice: number
}
与第二种一样
interface DisGoodsType extends GoodsType {
disPrice: number
}
type GoodsType = {
id: string
price: number
}
type DisGoodsType = GoodsType & {
disPrice: number
}
相同点:
1、都能描述对象类型
2、都能实现继承,interface使用extends,type配合交叉类型
不同点:
1、type除了能描述对象还可以用来自定义其他类型
2、同名的interface会合并(属性取并集,不能出现类型冲突),同名type会报错
// 同名interface
interface Item {
name: string
}
interface Item {
age: number
}
let item: Item = {
name: 'jack',
age: 18
}
在注解对象类型的场景下非常相似,推荐大家一律使用type,type更加灵活
type Props = {
type: 'primary' | 'success' | 'danger' | 'warning'
}
as 欺骗TS通过校验,使用不单会在运行时报错,在使用类型断言的时候除非明确知道是什么类型才去使用
泛型:是指在定义接口、函数等类型的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性,使用泛型可以复用类型并且让类型更加灵活
通用思路:
1、找到可变的类型部分通过泛型<T>抽象为泛型参数(定义参数)
2、再使用泛型的时候,把具体类型传入到泛型参数位置(传参)



