Day8-TypeScript(TS)的介面型别(Interface)Part 1

今天要来介绍TypeScript(TS)的介面型别(Interface)

首先了解TS的核心原则之一

  • 型别检查关注於所具有的形状
  • 鸭子型别(duck typing)

介面型别拥有以下特性:

扮演命名型别的角色,描述物件的形状(Shape),补强鸭子型别

鸭子型别
当你看到一只走起来像鸭子
游起来像鸭子
叫起来也像鸭子
那麽这只就可以被称为鸭子

判断依据:物件若含有特定名称的属性,它可能就是某种型别
因此,TS介面可以补强TS得鸭子型别。

不会转译成JavaScript

介面不会产生对应的JS程序码,
它是使用在程序设计阶段,
提供工具程序自动完成功能,
而在程序编译阶段提供型别检查,
因此,介面对於执行阶段的JS程序码是没有任何影响的

可重复使用

只需传入函式的物件满足介面需求即可。

范例如下,

interface MyFunc{
    x:number;
    y:number;
}

let func1=(p:MyFunc)=>{
    console.log(p.x,p.y);
}

func1({x:10});//error  每项参数都必须对应到
func1({x:10,y:20});
func1({x:10,z:20}); //error  未标记z视为错误

范例中,
第一项错误,
介面参数行内已标记指定y属性,
但传入参数时并没传入该值,
因此出现错误。

第二项错误,
介面参数行内标记未指定z属性,
但传入参数时却传入该值,
所以就会被视为错误。

今日结语

今天我们就简单认识介面型别(Interface)该如何使用,
之後会再带范例来解释。
加油加油。


<<:  Day11 - 除噪模型: FCDAE

>>:  Day 8: jest-dom

厉害的教学影片,看完对电脑会有全面的了解

[计算机概论] 先看这个 知道电脑的全貌,从电脑一开始的样子,怎麽演变到现在这样. 一开始怎麽sav...

【Day 06】领域驱动设计的战略设计(Strategic Design)

前言 我们常会使用业务性质来界定领域范围(Bounded Context),例如,采购、销售、库存、...

DAY27 mongo aggregate

今天要教 mongo aggregate 中文叫做聚合 是一种将来自多个document的value...

[Day1] 关於资料库30天的发文方向

这一个月的不间断发文,会将大二下学期必修的资料库概论浓缩成30篇文,并将当中所学,纪录的课程笔记再整...

Day15 - Ruby 字串处理入门

线上 Ruby 编辑器:https://runrb.io/ Ruby String 文件:http...