HarmonyOS

91 阅读1分钟
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,在TSvoidundefined不是一回事,
undefinedTS中时一种明确的简单类型,如果指定返回值为undefined,
那返回值必须时undefined类型


// 接口继承

interface GoodsType {
    id: string
    price: number
}
第一种
interface DisGoodsType { 
    id: string
    price: number
    disPrice: number
}
与第二种一样
interface DisGoodsType extends GoodsType {
    disPrice: number
}

// type注解继承
// 类型别名配合交叉类型(&)可以模拟继承,同样可以实现类型复用
type GoodsType = {
    id: string
    price: number
}

type DisGoodsType = GoodsType & {
    disPrice: number
}

// interface对比type
相同点:
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直接报错

在注解对象类型的场景下非常相似,推荐大家一律使用typetype更加灵活

// 字面量类型
type Props = {
    type: 'primary' | 'success' | 'danger' | 'warning'
}

// 类型断言
as 欺骗TS通过校验,使用不单会在运行时报错,在使用类型断言的时候除非明确知道是什么类型才去使用

泛型:是指在定义接口、函数等类型的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性,使用泛型可以复用类型并且让类型更加灵活

通用思路:
1、找到可变的类型部分通过泛型<T>抽象为泛型参数(定义参数)
2、再使用泛型的时候,把具体类型传入到泛型参数位置(传参)