1
1
( function ( ) {
2
2
3
3
type myType = {
4
- name : string ,
4
+ readonly name : string ,
5
5
age : number ,
6
6
[ propName : string ] : any ,
7
7
}
27
27
gender : 'male' ,
28
28
}
29
29
30
+
31
+
32
+ // 函数类型接口
33
+ interface SearchFunc {
34
+ ( source : string , subString : string ) : boolean ;
35
+ }
36
+ let mySearch : SearchFunc ;
37
+ mySearch = function ( source : string , subString : string ) {
38
+ let result = source . search ( subString ) ;
39
+ return result > - 1 ;
40
+ }
41
+
42
+
30
43
// interface 和 abstract 不同的是 abstract 可以有具体的方法,interface 所有的方法都是抽象方法
31
44
// 接口定义了类的规范标准
32
45
interface myInter {
44
57
}
45
58
}
46
59
60
+ // 类类型
61
+ interface ClockConstructor {
62
+ new ( hour : number , minute : number ) : ClockInterface ;
63
+ }
64
+ interface ClockInterface {
65
+ tick ( ) : void ;
66
+ }
67
+ function createClock ( ctor : ClockConstructor , hour : number , minute : number ) : ClockInterface {
68
+ return new ctor ( hour , minute ) ;
69
+ }
70
+ class DigitalClock implements ClockInterface {
71
+ constructor ( h : number , m : number ) { }
72
+ tick ( ) {
73
+ console . log ( "beep beep" ) ;
74
+ }
75
+ }
76
+ class AnalogClock implements ClockInterface {
77
+ constructor ( h : number , m : number ) { }
78
+ tick ( ) {
79
+ console . log ( "tick tock" ) ;
80
+ }
81
+ }
82
+ // 传入类构造函数
83
+ let digital = createClock ( DigitalClock , 12 , 17 ) ;
84
+ let analog = createClock ( AnalogClock , 7 , 32 ) ;
85
+
86
+
87
+ // 接口继承
88
+ interface Shape {
89
+ color : string ;
90
+ }
91
+ interface PenStroke {
92
+ penWidth : number ;
93
+ }
94
+ interface Square extends Shape , PenStroke {
95
+ sideLength : number ;
96
+ }
97
+ let square = < Square > { } ;
98
+
99
+
47
100
48
101
} ) ( ) ;
0 commit comments