Typescript的Interface中为何可以定义property?这样做的意义何在?

查看:164
本文介绍了Typescript的Interface中为何可以定义property?这样做的意义何在?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

之前回答了一个问题 https://segmentfault.com/q/10...

出于对其它面向对象强类型语言比如java,actionscript3中interface的经验,我回答了一句

一般接口只放方法(函数),不会定义属性

结果答案就被踩了,后来查了TS的文档发现,TS的interface确实可以定义property

这里我就有点困惑了,因为以前写别的强类型面向对象语言,interface一般都是用来描述高度抽象的行为所以一般情况下只定义方法(即使在语法上可以在interface中定义property,一般也不会这么去做),而property一般都是定义在class这个层面的。

由于没有系统学习过ts(基本就靠以前其它的语言经验拿来就上手了),所以这里请大家给我说说,ts这样设计的意义何在?如果要定义property为何不能用class代替呢?或者说我们在实际开发过程中是不是也应该规避在interface里定义property呢?

解决方案

typescript只是在编译器进行静态类型检查的弱类型语言,而不是一个强类型语言

简单说一个点
当我们只是需要在约束一个对象的结构时,使用interface在编译为js后,不会产生额外的信息,interface在编译为js后会被擦除;而如果使用class(包括abstract class),则会产生一个额外的对象,而实际上我们只是需要类型检查,这个对象就是无用的

关于TypeScript Team对于interface的定位,也许可以参考这篇blog:Walkthrough: Interfaces

这篇关于Typescript的Interface中为何可以定义property?这样做的意义何在?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆