TypeScript定义数组函数对象

数组的定义

普通定义:

let arr: number[] = [4, 6, 7, 9];
//需求:希望数组里面可以存数字或者字符串

联合数据类型:

//联合数据类型:|的优先级比较低,需要用()包裹提升优先级
//一旦使用联合查询,说明arr里面的值既可能是number也可能是string,所以会丢失一部分vscode提示信息
let arr: (number | string)[] = [1, 2, 3, 5, 'abc', 'ddef']
console.log(arr);

 类型别名:

用type定义类型别名,将一组类型存储到变量中,用type声明这个特殊变量

type ArrType = (number | string)[]
let arr1: ArrType = [1, 3, '2ddf', 5]
console.log(arr1);

函数设置类型:

普通定义:

需求:设置函数的参数类型+返回值类型
    具体要求传入number,处理完后返回number;
    ts要求必须给参数定义类型,而返回值会自动推断   
    
function add(a: number, b: number):number {
   return a + b
}
//函数表达式
const fn = function (a: number, b: number) {
    return a + b;
}
//箭头函数
const fn1 = (a:number, b:number) => {
    return a+b
}

函数的类型别名

函数的类型别名一般给箭头函数使用

   type ft = (a:number, b:number) => number
   const sub:ft = (a,b) => {
       return a+b
   }
   console.log(sub(5,8));

定义函数可选参数

在js中,定义了形参,调用必须按照之前定义的形参个数传入参数,否则报错。如果想定义可选参数,可以在变量名后面加上?

 const print = (name:string, gender?:string):void => {
    console.log(name);
   }
    print('yansunda')

对象类型

普通定义

 const my: {
        name: string,
        age: number,
        gender: string,
        sayHi:(content: string) => void
    } = {
        name: 'yansunda',
        age: 18,
        gender: "男",
        sayHi(content) {
            console.log(content);
        }
    }

对象别名

    // 对象别名
    type person = {
        name: string,
        age: number,
        gender: string,
        sayHi:(content: string) => void
    }

    const obj1:person = {
        name: 'yansunda',
        age: 18,
        gender: "男",
        sayHi(content) {
            console.log(content);
        }
    }
    console.log(obj1);
对象类型的可选属性
我想有的对象有某个属性,有的对象没有,那么可以在属性名后面加上一个“?”,这个和前面的函数是一样的
    type person = {
        name: string,
        age?: number,//“?”表示age可选属性
        gender: string,
        sayHi:(content: string) => void
    }

    const obj1:person = {
        name: 'yansunda',
        gender: "男",
        sayHi(content) {
            console.log(content);
        }
    }

 

 
posted @ 2024-09-29 17:11  洛飞  阅读(61)  评论(0编辑  收藏  举报