【TypeScript入门】TypeScript入门篇——对象
对象其实就是一种封装的概念,它把事物封装成一个类,然后提供类的接口,而具体的过程人们是看不到的。
一、对象实例
二、TypeScript 类型模板
三、鸭子类型(Duck Typing)
对象是包含一组键值对的实例。 值可以是标量、函数、数组、对象等,如下实例:
var object_name = { key1: "value1", // 标量key2: "value", key3: function() {// 函数}, key4:["content1", "content2"] //集合
}
以上对象包含了标量,函数,集合(数组或元组)。
一、对象实例
var sites = { site1:"Runoob", site2:"Google"
};
// 访问对象的值
console.log(sites.site1)
console.log(sites.site2)
编译以上代码,得到以下 JavaScript 代码:
var sites = { site1:"Runoob", site2:"Google"
};
// 访问对象的值
console.log(sites.site1)
console.log(sites.site2)
输出结果为:
Runoob
二、TypeScript 类型模板
假如我们在 JavaScript 定义了一个对象:
var sites = { site1:"Runoob", site2:"Google"
};
这时如果我们想在对象中添加方法,可以做以下修改:
sites.sayHello = function(){ return "hello";}
如果在 TypeScript 中使用以上方式则会出现编译错误,因为Typescript 中的对象必须是特定类型的实例。
var sites = {site1: "Runoob",site2: "Google",sayHello: function () { } // 类型模板
};
sites.sayHello = function () {console.log("hello " + sites.site1);
};
sites.sayHello();
编译以上代码,得到以下 JavaScript 代码:
var sites = {site1: "Runoob",site2: "Google",sayHello: function () { } // 类型模板
};
sites.sayHello = function () {console.log("hello " + sites.site1);
};
sites.sayHello();
输出结果为:
hello Runoob
此外对象也可以作为一个参数传递给函数,如下实例:
var sites = { site1:"Runoob", site2:"Google",
};
var invokesites = function(obj: { site1:string, site2 :string }) { console.log("site1 :"+obj.site1) console.log("site2 :"+obj.site2)
}
invokesites(sites)
编译以上代码,得到以下 JavaScript 代码:
var sites = {site1: "Runoob",site2: "Google"
};
var invokesites = function (obj) {console.log("site1 :" + obj.site1);console.log("site2 :" + obj.site2);
};
invokesites(sites);
输出结果为:
site1 :Runoob
site2 :Google
三、鸭子类型(Duck Typing)
鸭子类型(英语:duck typing)是动态类型的一种风格,是多态(polymorphism)的一种形式。
在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由"当前方法和属性的集合"决定。
可以这样表述:
"当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。"
在鸭子类型中,关注点在于对象的行为能做什么,而不是关注对象所属的类型。例如,在不使用鸭子类型的语言中,我们可以编写一个函数,它接受一个类型为"鸭子"的对象,并调用它的"走"和"叫"方法。在使用鸭子类型的语言中,这样的一个函数可以接受一个任意类型的对象,并调用它的"走"和"叫"方法。如果这些需要被调用的方法不存在,那么将引发一个运行时错误。任何拥有这样的正确的"走"和"叫"方法的对象都可被函数接受的这种行为引出了以上表述,这种决定类型的方式因此得名。
interface IPoint { x:number y:number
}
function addPoints(p1:IPoint,p2:IPoint):IPoint { var x = p1.x + p2.x var y = p1.y + p2.y return {x:x,y:y}
} // 正确
var newPoint = addPoints({x:3,y:4},{x:5,y:1}) // 错误
var newPoint2 = addPoints({x:1},{x:4,y:3})
【TypeScript入门】TypeScript入门篇——对象相关推荐
- TypeScript超详细入门教程(上)
TypeScript超详细入门教程(上) 01 开篇词:Hello~TypeScript 01 开篇词:Hello~TypeScript 更新时间:2019-10-30 13:49:46 既然我已经踏 ...
- LAYA和TypeScript制作H5入门——页面制作
上一篇: LAYA和TypeScript制作H5入门--准备工作 一般情况下,一个H5是由多个相互关联的ui页面串联组成.遵循的大致逻辑一般是加载页面,开始页面,内容页面和结束页面.这些界面承担了用户 ...
- 用TypeScript来写React官方入门教程 .tsx后缀文件,同时入门typescript和React
用TypeScript来写React官方入门教程 .tsx后缀文件,同时入门typescript和React 1. 项目说明: 这是React官网上那个下井字棋的入门教程,但是我把它换了typesci ...
- React入门看这篇就够了
2019独角兽企业重金招聘Python工程师标准>>> 摘要: 很多值得了解的细节. 原文:React入门看这篇就够了 作者:Random Fundebug经授权转载,版权归原作者所 ...
- Java快速入门-01-基础篇
Java快速入门-01-基础篇 如果基础不好或者想学的很细,请参看:菜鸟教程-JAVA 本笔记适合快速学习,文章后面也会包含一些常见面试问题,记住快捷键操作,一些内容我就不转载了,直接附上链接,嘻嘻 ...
- .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了
写在前面 上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能.今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码的演示编写完成后我会通过Git ...
- Spring Cloud 入门 之 Zuul 篇(五)
一.前言 随着业务的扩展,微服务会不对增加,相应的其对外开放的 API 接口也势必增多,这不利于前端的调用以及不同场景下数据的返回,因此,我们通常都需要设计一个 API 网关作为一个统一的 API 入 ...
- Spring Cloud 入门 之 Feign 篇(三)
一.前言 在上一篇文章<Spring Cloud 入门 之 Ribbon 篇(二)> 中介绍了 Ribbon 使用负载均衡调用微服务,但存在一个问题:消费端每个请求方法中都需要拼接请求服务 ...
- Spring Cloud 入门 之 Ribbon 篇(二)
一.前言 上一篇<Spring Cloud 入门 之 Eureka 篇(一)> 介绍了微服务的搭建,服务注册与发现.但在文章中留了一个小尾巴--如何正确使用 Eureka 进行服务发现并调 ...
- redis入门——Spring整合篇
redis入门--Spring整合篇 @(Redis)[服务器, 连接池, 集群, jedis, spring] redis入门Spring整合篇 Spring整合Redis redis整合分析 编写 ...
最新文章
- ubuntu安装五笔输入法(ibus-table-wubi)
- 文本编辑器添加文本编辑区
- jquery 手指滑动多半屏_JS拖拽专题(五)——「玩出花儿来」移动端滑动事件的封装...
- 基于Swoole开发PHP扩展
- .NET 6 新特性 WaitAsync
- Cass2008 for CAD2006 安装
- Python_自定义关键字的使用
- 技术干货 | 基于MindSpore更好的理解Focal Loss
- 打车应用上马快递业务靠谱吗?
- Codeforces 1043F(容斥+dp)
- Ubuntu下打开windows的txt文件乱码解决
- 为什么要避免大事务以及大事务如何解决?
- 联想服务器查看运行状态,服务器硬件批量监控工具
- 印刷质量缺陷的视觉检测原理概述
- 解决实现虚拟机win10与主机文件的共享问题
- 自定义Android Switch控件
- 路由器、DDNS、花生壳
- echarts实现3D地球模式--3D线和标记mark
- 2020 年的风口是什么?
- qq空间把android改成iphone,装逼时代 教你如何修改QQ微信小尾巴为来自iphone6