TypeScript 接口(三)
TypeScript的核心原则之一是对值所具有的结构进行类型检查。
接口初始:
interface objProperty {
    name: string
}
function printName(nameObject: objProperty) {
    console.log(nameObject.name);
}
let obj = { age: 11, name: 'Name is Sunny' };
printName(obj);
注意,类型检查器不会去检查属性的顺序,只要相应的属性存在并且类型也是对的就可以。
可选属性:
可选属性名字定义的后面加一个?符号。
可选属性的好处
- 可以对可能存在的属性进行预定义,
 - 可以捕获引用了不存在的属性时的错误。
 
interface SquareConfig {
  color?: string;
  width?: number;
}
只读属性:
只读属性只能在对象刚刚创建的时候修改其值。
interface Point {
    readonly x: number;
    readonly y: number;
}
let p1: Point = { x: 10, y: 20 };// 赋值后, x和y再也不能被改变了。
p1.x = 5; // error!
TypeScript具有ReadonlyArray<T>类型,它与Array<T>相似,只是把所有可变方法去掉了,因此可以确保数组创建后再也不能被修改:
let a: number[] = [1, 2, 3, 4];
let ro: ReadonlyArray<number> = a;
ro[0] = 12; // error!
ro.push(5); // error!
ro.length = 100; // error!
a = ro; // error!
上面代码的最后一行,可以看到就算把整个ReadonlyArray赋值到一个普通数组也是不可以的。 但是你可以用类型断言重写:
a = ro as number[];
readonly vs const
最简单判断该用readonly还是const的方法是看要把它做为变量使用还是做为一个属性。 做为变量使用的话用 const,若做为属性则使用readonly。
实现接口:implements
接口描述了类的公共部分,而不是公共和私有两部分。 它不会帮你检查类是否具有某些私有成员。
interface ClockInterface {
    currentTime: Date;
    setTime(d: Date);
}
class Clock implements ClockInterface {
    currentTime: Date;
    setTime(d: Date) {
        this.currentTime = d;
    }
    constructor(h: number, m: number) { }
}
继承接口:extends
和类一样,接口也可以相互继承。 这让我们能够从一个接口里复制成员到另一个接口里,可以更灵活地将接口分割到可重用的模块里。
一个接口可以继承多个接口,创建出多个接口的合成接口。
interface Shape {
    color: string;
}
interface PenStroke { penWidth: number; } 
interface Square extends Shape {
    sideLength: number;
}
interface Square extends Shape, PenStroke { 
  name: string; 
}
let square = <Square>{};
square.color = "blue";
square.sideLength = 10;
TypeScript 接口(三)的更多相关文章
- 《三》大话 Typescript 接口
		
> 前言: 本文章为 TypeScript 系列文章. 旨在利用碎片时间快速入门 Typescript. 或重新温故 Typescript 查漏补缺.在官方 api 的基础上, 加上一些日常使用 ...
 - 从C#到TypeScript - 接口
		
总目录 从C#到TypeScript - 类型 从C#到TypeScript - 高级类型 从C#到TypeScript - 变量 从C#到TypeScript - 接口 从C#到TypeScript ...
 - TypeScript接口与类的使用
		
一.TypeScript接口 Interfaces 可以约定一个对象的结构 一个对象去实现一个接口 就必须拥有这个接口中所有的成员用interface定义接口, 并且定义接口中成员的类型 编译之后会发 ...
 - TypeScript 接口继承
		
1.TypeScript 接口继承 和类一样,接口也可以通过关键字 extents 相互继承.接口继承,分为:单继承和多继承,即继承多个接口.另外,接口也可以继承类,它会继承类的成员,但不包括具体的实 ...
 - typescript接口的概念 以及属性类型接口
		
/* 1.vscode配置自动编译 1.第一步 tsc --inti 生成tsconfig.json 改 "outDir": "./js", 2.第二步 任务 ...
 - TypeScript入门三:TypeScript函数类型
		
TypeScript函数类型 TypeScript函数的参数 TypeScript函数的this与箭头函数 TypeScript函数重载 一.TypeScript函数类型 在上一篇博客中已经对声明Ty ...
 - TypeScript 学习三 类
		
1,类: 类是TypeScript的核心,大部分代码都是写在类里面: 声明:class 类名{ 属性: 方法(){}:} 注意:类名首字母同样大写,但是方法不需要表明类型,直接写方法名加()即可:属 ...
 - golang接口三个特性
		
类型和接口 因为映射建设在类型的基础之上,首先我们对类型进行全新的介绍.go是一个静态性语言,每个变量都有静态的类型,因此每个变量在编译阶段中有明确的变量类型,比如像:int.float32.MyTy ...
 - typescript接口(学习笔记非干货)
		
typescript的核心原则之一就是对所具有的shape类型检查结构性子类型化 One of the core principles of typescript is to check struct ...
 
随机推荐
- linux 安装mysql 5.6.11
			
tar zxvf mysql-.tar.gz cd mysql- cmake . -DCMAKE_INSTALL_PREFIX=/home/mysql/ -DMYSQL_DATADIR=/home/m ...
 - centOS7 安装redis-3.2.6
			
0.下载tar.gz包并解压到某个位置,然后cd进入解压后的目录(redis-3.2.6)下 1.安装 make MALLOC=libc 关于为什么这样做,参考redis-3.2.6目录下的READM ...
 - 使用PostSharp在.NET平台上实现AOP
			
摘自:http://www.cnblogs.com/leoo2sk/archive/2010/11/30/aop-postsharp.html 本文首先介绍AOP(面向方面编程)的相关概念及理论,然后 ...
 - Spring3.0官网文档学习笔记(四)--3.1~3.2.3
			
3.1 Spring IoC容器与Beans简单介绍 BeanFactory接口提供对随意对象的配置: ApplicationContext是BeanFactory的子接口.整合了Sp ...
 - Procedure for installing and setting Sun JDK Java on Default Amazon Linux AMI
			
# First verify the version of Java being used is not SunJSK. java -version # Get the latest Sun Ja ...
 - php处理行业分类数据
			
实现步骤: 1.将excel表格存储为后缀名为 .csv格式的文件: 2.将.csv格式文件导入到mysql数据库中: 3.通过条件查询将所需要的数据查出并导入另一个数据表中: 下面是一些php片段: ...
 - sqlite 小刀 初试
			
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入式产 ...
 - css中属性值继承小解
			
继承:html元素可以从父元素那里继承一部分css属性,即使当前元素没有定义该属性. 1.css可以和不可以继承的属性 不可继承的:display.margin.border.padding.back ...
 - 网络中常见的ping命令协议
			
ICMP是"Internet Control Message Ptotocol"(Internet控制消息协议)的缩写.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之 ...
 - Atitit.获取某个服务 网络邻居列表 解决方案
			
Atitit.获取某个服务 网络邻居列表 解决方案 原理,带入某个ip扫描从0---255 很快,多线程几秒就可以出来. 使用CountDownLatch来join线程.. 返回 [{ " ...