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);
}
}