定义一个方法,返回一个数组,数组的每一项均为对象,对象中包含label和value两个属性
创建一个public.ts文件
javascript实现
// javascript 实现
export const formatYear = function () {
let date = new Date().getFullYear();
let arr = [];
for (let i = 0; i < date + 10; i++) {
arr.push({
label: i,
value: i
})
}
return arr;
}
typescript实现
// 定义一个接口约束label和value值类型
interface labelValue {
label: number;
value: number;
}
let obj: labelValue;
export function formatYear (): labelValue[] {
let date = new Date().getFullYear();
let arr: labelValue[];
for (let i = 0; i < date + 10; i++) {
obj = {
label: i,
value: i
}
arr.push(obj)
}
return arr;
}
typescript 类型兼容
在public文件中再定义一个方法,也返回一个数组,但是label类型变为string
由于ts文件中label属性只能声明一次
所以需要用到类型变量来实现
T 表示传入的类型,可以为number、string、boolean等
传入什么label就是什么类型
interface labelValue<T> {
label: T;
value: number;
}
// 传入number类型
let obj: labelValue<number>;
export function formatYear (): labelValue<number>[] {
let date = new Date().getFullYear();
let arr: labelValue<number>[];
for (let i = 0; i < date + 10; i++) {
obj = {
label: i,
value: i
}
arr.push(obj)
}
return arr;
}
// 传入string类型
let obj1: labelValue<string>;
export function formatHours (): labelValue<string>[] {
let arr: labelValue<string>[];
for (let i = 0; i <= 24 + 10; i++) {
obj1 = {
label: i + 'h',
value: i
}
arr.push(obj1)
}
return arr;
}