- 对象类型接口
interface List {
id: number,
name: string
}
interface Result {
data: List[]
}
function render(result: Result) {
result.data.forEach(value => {
console.log(value.id, value.name);
})
}
render({
data: [
{id: 1, name: 'A', sex: 'male'},
{id: 2, name: 'B'}
]
})
let result = {
data: [
{id: 1, name: 'A', sex: 'male'},
{id: 2, name: 'B'}
]
};
render(result);
render({
data: [
{id: 1, name: 'A', sex: 'male'},
{id: 2, name: 'B'}
]
} as Result);
render(<Result>{
data: [
{id: 1, name: 'A', sex: 'male'},
{id: 2, name: 'B'}
]
});
interface List {
id: number,
name: string,
[x: string]: any
}
interface List {
id: number,
name: string,
age?: number,
}
function render(result: Result) {
result.data.forEach(value => {
console.log(value.id, value.name);
if(value.age) {
console.log(value.age);
}
})
}
let result = {
data: [
{id: 1, name: 'A', sex: 'male'},
{id: 2, name: 'B', age: 18}
]
};
render(result);
interface List {
readonly id: number,
name: string,
}
interface StringArray {
[index: number]: string
}
let chars: StringArray = ['A', 'B'];
interface Names {
[x: string]: string,
[z: number]: string
}
interface Names {
[x: string]: any,
[z: number]: number
}
- 函数类型接口
let add: (x: number, y: number) => number
interface Add {
(x: number, y: number): number
}
type Add = (x: number, y: number) => number
let add: Add = (a, b) => a + b;
interface Lib {
(): void,
version: string,
doSomething(): void
}
function getLib() {
let lib: Lib = (() => {}) as Lib;
lib.version = '1.0';
lib.doSomething = () => {};
return lib;
}
let lib1 = getLib();
lib1();
lib1.doSomething();
let lib2 = getLib();
- 函数相关知识点
- 函数定义
function add1(x: number, y: number) {
return x + y;
}
let add2: (x: number, y: number) => number
type add3 = (x: number, y: number) => number
interface add4 {
(x: number, y: number): number
}
- 可选参数, 必须位于必选参数之后
function add5(x: number, y?: number) {
return y ? x + y : x;
}
add5(1);
add5(1, 2);
- 参数默认值
function add6(x: number, y = 1, z: number, q = 2) {
return x + y + z + q;
}
add6(1, undefined, 3);
- 剩余参数,参数个数不固定
function add7(x: number, ...rest: number[] {
return x + rest.reduce(pre, cur) => pre + cur;
})
add7(1,2,3,4,5);
- 函数重载
function add8(...rest: number[]): number;
function add8(...rest: string[]): string;
function add8(...rest: any[]): any {
let first = rest[0];
if(typeof first === 'string') {
return rest.join('');
}
if(typeof first === 'number') {
return rest.reduce(pre, cur) => pre + cur;
}
}
add8(1,2,3);
add8('a','b','c');