interface User {
name: string;
age: number;
}
let user: User = {
name: 'John',
age: 25
};
interface User {
name: string;
age?: number;
email?: string;
}
let user1: User = { name: 'John' };
let user2: User = { name: 'Jane', age: 25 };
interface Point {
readonly x: number;
readonly y: number;
}
let point: Point = { x: 10, y: 20 };
interface StringMap {
[key: string]: string;
}
let map: StringMap = {
name: 'John',
city: 'Beijing'
};
interface NumberArray {
[index: number]: string;
}
let arr: NumberArray = ['a', 'b', 'c'];
interface Mixed {
[key: string]: string | number;
length: number;
}
interface SearchFunc {
(source: string, subString: string): boolean;
}
let search: SearchFunc = function(src, sub) {
return src.includes(sub);
};
interface ClockInterface {
currentTime: Date;
setTime(d: Date): void;
}
class Clock implements ClockInterface {
currentTime: Date = new Date();
setTime(d: Date) {
this.currentTime = d;
}
}
interface Shape {
color: string;
}
interface Square extends Shape {
sideLength: number;
}
let square: Square = {
color: 'blue',
sideLength: 10
};
interface PenStroke {
penWidth: number;
}
interface ColoredSquare extends Square, PenStroke {
opacity: number;
}
interface Counter {
(start: number): string;
interval: number;
reset(): void;
}
function getCounter(): Counter {
let counter = function(start: number) {
return start.toString();
} as Counter;
counter.interval = 123;
counter.reset = function() {};
return counter;
}
class Control {
private state: any;
}
interface SelectableControl extends Control {
select(): void;
}
class Button extends Control implements SelectableControl {
select() {}
}
interface User {
name: string;
}
interface User {
age: number;
}
let user: User = {
name: 'John',
age: 25
};