TypeScript学习笔记(四)——对象、数组、函数类型

一、对象类型

1. 使用接口定义对象类型:接口类似java中的接口,可用于对类的一部分进行抽象以及对对象形状的描述。

对象定义的变量应与接口数量相同。不可多不可少。

interface Animal {
  land: boolean;
  sound: string;
}

let dog: Animal = {
  land: true,
  sound: 'bark'
};
2. 特殊属性:

1)可选属性:一个对象不需要匹配接口完全形状的时候使用,在属性后面加?

interface Animal {
  land: boolean;
  sound?: string;
}



let dog: Animal = { land: true};

2)任意属性:不确定要加的属性是什么。[propName: string]: any;

interface Animal {
  land: boolean;
  sound?: string;
  [propName: string]: any;
}

3)只读属性:只在声明时赋值,不可再次赋值
readonly id: number;

二、数组类型:

1. 数组类型确定后,数组项中不可出现其他类型的数据

let fibonacci: number[] = [1, 1, 2, 3, 5];

2. 数组泛型:Array<elemType>,泛型,顾名思义多种类型,这里指预定什么类型,使用时在进行指定。
function createArray<T>(length: number, value: T): Array<T> {
  let result = [];
  for (let i = 0; i < length; i++) {
    result[i] = value;
  }
  return result;
}

createArray<string>(3, 'x');
先将任意类型定为T,然后调用时将string付给T,则是string类型

3. 用接口表示:

interface NumberArray {
  [index: number]: number;
}
let fibonacci: NumberArray = [1, 1, 2, 3, 5];
4. 任意类型数组:
let list: any[] = ['Xcat Liu', 25, { website: 'http://xcatliu.com' }];
5. 类数组:不是数组类型,常常有自己的接口定义。


三、函数类型:同javascript,函数通过函数声明及函数表达式定义,要考虑输入及输出

1. 函数声明:同样参数个数不可多不可少

function sum(x: number, y: number): number {
  return x + y;
}
1)x: number, y: number声明输入

2)sum(...): number声明输出

2. 函数表达式

1)一般声明方式:只对输入进行了限制,输出通过推断限定

let mySum = function (x: number, y: number): number {
  return x + y;
};
2)箭头函数方式:可以手动设定输出类型,箭头左边设定输入类型,右边设定输出类型
let mySum: (x: number, y: number) => number = function (x: number, y: number): number {
  return x + y;
};

3. 使用接口定义

interface SearchFunc {
  (source: string, subString: string): boolean;
}

let mySearch: SearchFunc;
mySearch = function(source: string, subString: string) {
  return source.search(subString) !== -1;
}

4. 可选参数:同前面相同,在参数后面加上?

5. 参数默认值,在函数参数中直接设定:name: string='bob'

6. 剩余参数:...rest获取剩余参数,参数个数不限,是一个数组,后面不可以有其它参数。

function push(array: any[], ...items: any[]) {
  items.forEach(function(item) {
    array.push(item);
  });
}

let a = [];
push(a, 1, 2, 3);

7. 重载:类似java的重载,相同名称函数可以接受不同个数,不同类型的变量。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值