typescript基础学习---2

数组类型和元组类型

// 数组类型
let arr1:number[] = [1,2,3,4,5]
let arr2:Array<number>  = [1,2,3,4,5]

// 元组类型
let arr3:[number,string,number] = [1,'sss',3]

对象类型和索引签名

// 对象索引
type A = {
  username:string,
  age:number
}

let a:A = {
  username:'111',
  age:20
}


// 索引签名
type B = {
  username:string,
  age:number,
  // 索引签名
  [index:string]:any
}

let b:B = {
  username:'lisi',
  age:33,
  hobby:'eat'
}

函数类型与void类型

// 这里表示函数返回值类型是number
let foo = function(n1:number,n2:number):number{
  return 123
}
// 等价于
let foo2:(n1:number,n2:number)=>number = function(n1,n2){
  return 123
}

// void:代表函数没有任何返回值

函数重载与可调用注解

function foo(n1: string): any;
function foo(n1: string, n2: number): any;
function foo(n1: string, n2: number, n3: number): any;
// 函数实现必须写
function foo(n1: string, n2?: number, n3?: number): any {
  if (n2 === undefined && n3 === undefined) {
    // 只传了一个参数,则执行这段逻辑
    return `hello, ${n1}`;
  } else if (n3 === undefined) {
    // 传了两个参数,则执行这段逻辑
    return `${n1} + ${n2} = ${n1 + n2}`;
  } else {
    // 传了三个参数,则执行这段逻辑
    return `${n1} + ${n2} + ${n3} = ${n1 + n2 + n3}`;
  }
}

console.log(foo('Alice')); // 输出:hello, Alice
console.log(foo('1', 2)); // 输出:1 + 2 = 12
console.log(foo('1', 2, 3)); // 输出:1 + 2 + 3 = 123


// 可调用注解
// type A = ()=>void
type A = { // 可调用注解,可以针对函数重载进行注解
    (): void
}
let a:A = () => {};

枚举类型和const枚举

enum Roles {
  SUPER_ADMIN,
  ADMIN = 3,
  USER,
}
console.log(Roles.SUPER_ADMIN) //0
console.log(Roles.ADMIN) //3
console.log(Roles.USER) //4

// 这里的0不是下标是他的值,第一项默认是0依次递增
console.log(Roles[0]) //SUPER_ADMIN
console.log(Roles[3]) //ADMIN
console.log(Roles[4]) //USER

// const枚举
// 编译后看不到原来的对象
// 如果只当常量使用就定义const 更有利于提升性能
const enum Roles {
  SUPER_ADMIN = "super_admin",
  ADMIN = 'admin',
  USER = 'user',
}

console.log(Roles.SUPER_ADMIN);


// 编译成js后
console.log("super_admin" /* Roles.SUPER_ADMIN */);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_20047659

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值