TypeScript的核心原则之一是对值所具有的结构进行类型检查。接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。

interface testType {
name: string;
age: number;
}  
function test(obj: testType): void {
console.log(obj.name);
console.log(obj.age);
}
test({name:"fred",age:20,height:180})
//fred 20

interface:接口关键字,只要传入的对象满足接口的必要条件,那么它就是被允许的。

可选属性(接口定义中加“?”)

interface testType {
name: string;
age?: number;
}

只读属性(readonly)

interface testType {
readonly name: string;
readonly age: number;
} let test1:testType = {name:"fred",age:20}
test1.name = "Bob"; //error

额外的属性检查

interface testType {
name?: string;
age?: number;
} function test(conf: testType): void { } test({ nama: "fred", age: 20 }) //error:'nama' dose not exist in type 'testType'

解决方法:a) 断言

test({ nama: "fred", age: 20 } as testType) //断言

    b)字符串索引签名

interface testType {
name?: string;
age?: number;
[propName:string]:any; //字符串索引签名
}

    c)中间变量绕过类型检测

let test2 = { nama: "fred", age: 20 }; //中间变量绕过类型检测
test(test2)

接口继承(extends)

interface nameFace {
name: string;
}
interface ageFace {
age: number;
}
interface heightFace extends nameFace, ageFace {
height: number;
} let person = <heightFace>{};
person.name = "fred";
person.age = 20;
person.height = 180;

接口继承类

class Point {
x: number;
y: number;
} interface Point3d extends Point {
z: number;
} let point3d: Point3d = {x: 1, y: 2, z: 3};

最新文章

  1. i7 4790 z97-ar ssd 固态硬盘 装机的一些经历
  2. Chance – 功能强大的 JavaScript 随机数生成类库
  3. android post带数据请求方式,传递的数据格式包括json和map
  4. iOS开发--QQ音乐练习,歌词的展示,歌词的滚动,歌词的颜色变化
  5. oracle net manager的配置文件tnsnames.ora位置
  6. 1058: [ZJOI2007]报表统计 - BZOJ
  7. Spark的TorrentBroadcast:实现
  8. JAVA模拟各种请求方式访问RESTFUL
  9. asp.netGridView使用技巧
  10. 开始学习yii2第一天
  11. 多线程join(加入)
  12. Mongo 整体架构介绍(1)-------分片集群
  13. 【安卓开发】Android为什么选择binder
  14. UNIX环境高级编程——进程间通讯方法整理
  15. Go调用C代码,Cgo札记
  16. ionic service
  17. &quot;上市时间:&amp;nbsp;2014&amp;#24180;&amp;#31179;&amp;#20908;&amp;#23395;&quot; unicode十进制编码转中文
  18. ubuntu16.04下安装kdevelop和汉化
  19. 利用Ajax和Servlet实现输入框提示功能
  20. CentOS7安装OpenStack(Rocky版)-05.安装一个nova计算节点实例

热门文章

  1. spring 3.2 后 annotation-driven 注册新的类
  2. 导入android sdk samples工程报错&quot;did you mean to use @+id instead of @+android:id?&quot;
  3. python微信库 --- itchat
  4. 3.22课&#183;&#183;&#183;&#183;&#183;&#183;&#183;&#183;&#183;CSS样式表
  5. IOS 代码风格习惯 总结1
  6. 每天一个Linux命令(33)cal命令
  7. 第五篇、css补充二
  8. android电池(四):电池 电量计(MAX17040)驱动分析篇【转】
  9. HTML入门学习笔记
  10. 算法思考: poj 1969 Count on Canton