- 数组的声明
//vue2
let ary: Array<string>
let arr: number[]
//vue3
const data_userNumber = ref<any>([])
data_userNumber.value = data.user
Array<T>,
这个T就是类型,
相当于说动物<哺乳动物>
- 用ts声明对象
interface Myobject = {
[key: string]: any
}
- 数组初始化
// vue2
let ary: Array<string> = ['a', 'b', 'c']
let arr:number[] = [1,2,3,4]
- 对象的初始化
interface Person {
name: string;
age: number;
}
// tom的类型是Person,tom的形状必须和接口Person一致
let tom: Person = {
name: 'Tom,
age: 25
};
- 定义数组每一项都为对象
interface Item {
name:string;
path:string;
}
interface Index {
[index:number]: Item
}
let list:Index = [{
name: '',
path: ''
}]
interface可以用来约束函数、对象、类
1)对象类型的接口:
interface ListItem {
id: number,
name: string
}
interface List {
data: ListItem[]
}
function getListId(list: List){
list.data.forEach(item => {
console.log(item.id,item.name)
})
}
// 允许传入的list有除了接口定义的其他值,但接口中规定的值必须要有
let list = {
data: [
{id: 2, name: 'jonn', age: 13}]
}
//若直接传入对象内容(字面量),ts会对其余的值进行类型检查,解决方法1: 将内容赋值给一个变量 2.添加类型断言 as + 对象类型 3.给接口添加[x: string]:any
getListId({data: [{id: 1,name: 'hh', age: 13}]} as List)
2)函数类型的接口:
第一种: interface Add {
(x: number, y: number):number
}
第二种: let add: Add = (a,b) =>{return a + b}
3) 混合类型的接口(一个接口即可以定义一个函数,也可以定义一个对象)
// 混合类型接口
//混合类型接口
interface MixItf {
():void;
msg:string;
dosomething():void
}
function getMix(){
let lib:MixItf = (() => {}) as MixItf;
lib.msg = 'rose';
lib.dosomething = () => {}
return lib;
}
let getMix1 = getMix()
console.log(getMix1.msg) //rose
- 泛型(generics) 定义函数、接口、类的时候不预先指定类型,使用的时候再指定类型。
//使用泛型
interface Obj{
name:string;
path:string;
}
let array:Array<Obj> = [{name:"",path:""}];
7.interface && type 联合类型必须用type
//联合类型 和 交叉类型
type StringNumber = string | number;
let a: StringNumber;
a = "1";
a = 7;
https://segmentfault.com/a/1190000023858355
- 如何判断一个对象为空对象?
let data = {};
let arr = Object.keys(data);
console.log(arr.length == 0);//true
- 声明函数
//普通函数
function add(num1:number,num2: number):number {
return num1 + num2
}
//箭头函数
const ad = (a:number = 100, b:number = 100): number => {
return a + b
}
//注意:箭头函数的返回值类型要写在参数小括号的后面
// 参数是对象
function info({name, age}: {name: string, age: number}):string {
return name + age
}
const text = info({name:'xxx', age: 18})
//参数是对象
function getNumber({one}: {one: number}) {
return one
}
const number = getNumber({one: 1})
- ts中的类和js中类基本相同,不同点是ts多了一些修饰符。类的重写和继承。