转职成为TypeScript程序员的参考手册(四)

泛型

对c#程序员来说,TypeScript的泛型很熟悉,基本上是一致的设计。

类型约束

C#使用where关键字标记类型约束,TypeScript在尖括号内使用extends关键字,效果相同。

下面的例子中IExample约束了泛型必须是IMyInterface和他的派生类。

如果像下图这样用的话,就能约束为同时继承ClassOne和ClassTwo的类型。很费解吧,请特别注意。

这是因为本质上TypeScript的类型系统并不那么严格,下面的章节会详细解释TypeScript的类型系统

你也可以使用泛型作为泛型的类型约束,如下

结构类型

C#的类型系统是强制标记的,对象的类型必须显示声明。即使两个类型拥有完全相同的结构,他们也不是相同的类型。

TypeScript的类型系统是结构上的,建筑结构,层次型的。结构相同的类型即可认为是同一类型。

下面是C#中的一个例子

ClassA 和 ClassB是完全不同的类型,他们之间是不同的,必须显示继承接口才能让他们兼容。

而在TypeScript中不是这样,我们用如下的例子来证明。ClassA ClassB ExampleC 拥有签名一致的函数,所以他们就可以兼容。

TypeScript的结构类型系统意味着你在c#中的观念不再成立,class name不是关键。这需要我们写代码的时候时刻注意。

这玩意会让代码千变万化,如果你熟悉C#或者JAVA,这可能会让你困惑。

?

看下面的例子,不需要class关键字,也会实实在在的产生类型。

在这个例子中,会产生一个匿名的类型

这个匿名的类型可以让开发工具提供自动完成功能,编译器也会检查。如果你尝试将objA的name赋值一个数值,编译器会检查到告诉你错误。编译器还会为数组推断类型。

访问修饰器

TypeScript的访问修饰器可能会给你一种弱小的感觉,的确如此。他仅仅是一个编译时功能。

模块中的一切均为私有,除非加上export关键字。没有export关键字的类型仅能在模块内实用。

类的内部,一切均为公开,除非加上private 关键字。public只是为了看起来意图明确。

TypeScript的访问修饰器就是这样而已,没有c#的 internal 和 protected这种修饰器,想要c#类似的功能就放弃吧。

时间: 2024-08-01 22:47:32

转职成为TypeScript程序员的参考手册(四)的相关文章

转职成为TypeScript程序员的参考手册

写在前面 作者并没有任何可以作为背书的履历来证明自己写作这份手册的分量. 其内容大都来自于TypeScript官方资料或者搜索引擎获得,期间掺杂少量作者的私见,并会标明. 大部分内容来自于http://www.infoq.com/minibooks/typescript-c-sharp-programmers 你甚至可以认为这就是对这本英文小册子的翻译,实际上80%如此. 写给那些已经有编程基础,尤其是掌握c语言.c#.java这一类型的静态类型语言的同好. 鸣谢 先谢国家,虽然并不知道要谢些什

转职成为TypeScript程序员的参考手册(三)

模块.类型.接口 TypeScript的模块用于代码组织,类似C#的namespace.一个模块可以包含多个类和接口.可以将类和接口私有化或者导出,导出的意思就是公开,让其他模块可以访问他们. TypeScript的class和C#的class意义相同.实际上TypeScript的一个亮点就是他隐藏了JavaScript的原型设计,而是采用了更流行的基于类型的面向对象方式.你可以扩展其他的class,实现多个接口,添加构造函数,公开属性和方法.这些都和c#的class很相似. 属性和方法可以使用

逗比之——程序员装逼手册1(初级版)

一.准备工作 "工欲善其事必先利其器." 1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好.一个用来查资料,一个用来写代码.总之要显得信息量很大,效率很高. 2.椅子不一定要舒服,但是一定要可以半躺着. 3.大量的便签,各种的颜色的,用来记录每天要完成的事务,多多益善.沿着电脑屏幕的边框,尽量贴满,显出有很多事情的样子. 4.工具书,orelly的,机械工业,电子工业什么的都可以,能英文就英文,不行影印版的也可以,反正越厚越好,而且千万不要放在书架上,一定要堆

逗比之——程序员装逼手册2(进阶版)

1. 着装 一根牛X的程序员是根本没有时间打理自己外貌的,发型就要像爱因斯坦一样,顶着一脑袋鸡窝,凌乱蓬松美,给人随时能从头发里掏出一个鸡蛋的感觉.胡子一大把,彰显自信又从容,不近视则以,近视就要戴酒瓶底子那么厚的大眼镜,一种科研工作者的风格.牛X程序员对自己着装是有高要求的,无论是春夏秋冬,白天晚上,刮风下雨,一个牛X的程序员都要十分在意自己着装,T恤+大花裤衩子+拖鞋是标配,一年365天风雨无阻.换衣服保持一年3-5件T恤的更新频率就可以,T恤大多是参见开源大会免费获得的,上面印着ruby

逗比之——程序员装逼手册3(逆袭版)

程序员嘛,外行人看起来已经是不可理解的奇怪生物了,自然也没必要跟他们再装逼 所以呢,如何对其他程序员装逼就是一门很有学问的事了 于是乎在下手痒写了个<高级程序员装逼指南>,请大家指正 ** 编程语言 ** 千万千万千万千万不要说自己是Java/C#/C++程序员 尽量学一些奇怪的语言,python已经有烂大街的趋势了,写写还是可以,装逼是用不上了 Lisp和Erlang都是装逼的好语言 当然你要是号称会Haskell就更牛X了,实在不会也没关系,发发跟Haskell有关的状态别人也很装了 没事

检测PHP程序员是否合格的四十条标准

四十条标准检测你是否是一个合格的PHP程序员,网上看到的,也不知道是谁出的标准,不官方,也不权威,但很给力,对在做php开发的同志们还是比较有参考性的.以下标准超过三条就不合格了.超过五条就得好好反省下自己的不足了.不可当真,仅供参考反省之用.1. 不会利用如phpDoc这样的工具来恰当地注释你的代码2. 对优秀的集成开发环境如 EclipsePHP EPP 或 Zend Studio PDT视而不见3. 从未用过任何形式的版本控制系统,如Subclipse4. 不采用某种编码与命名标准,以及通

程序员初学机器学习的四种方式

http://blog.jobbole.com/67621/ 本文由 伯乐在线 - XiaoxiaoLi 翻译.未经许可,禁止转载!英文出处:Jason Brownlee.欢迎加入翻译组. 学习机器学习有很多方法,大多数人选择从理论开始. 如果你是个程序员,那么你已经掌握了把问题拆分成相应组成部分及设计小项目原型的能力,这些能力能帮助你学习新的技术.类库和方法.这些对任何一个职业程序员来说都是重要的能力,现在它们也能用在初学机器学习上. 要想有效地学习机器学习你必须学习相关理论,但是你可以利用你

程序员的奋斗史(四十一)——大学断代史(五)——我的娱乐方式

文/温国兵 忙碌的大学生活总要有属于自己的娱乐方式,琴棋书画也好,游戏运动也罢. 上大学开通了人人网.新浪微博.腾讯微博,再到后来的微信.陌陌.来往.易信.米聊.Line.WhatsAPP,加上最开始的QQ.QQ空间.朋友网,太多的SNS使我不得不放弃其中的一些.现在,微信成为我现在使用最频繁的SNS应用,偶尔登下新浪微博,弃用其他提及的所有SNS网站或者应用.常说人生而孤独,我们渴望与他人的结交,迫不及待的渴望与他人的世界产生交集.使用SNS的原因,大抵有如下几个:打发时间.内心空虚.搪塞孤独

程序员的奋斗史(四十四)——大学断代史(八)——大学的友谊

文/温国兵 我不是一个善于表达的人,但很庆幸大学里结实了几个知己. 原本我是其他寝室的,缘分使然,让我和现在的室友相聚.和好友A.好友B.好友C之间发生了太多太多,以至于太多回忆从脑海中隐隐浮现.A在我的正前方,无数个夜晚不知道他在被窝里做些什么,我睡了很久还依稀可以听见他的声音.大学和A同学谈得最多,每次都是相当长的时间,在我的心里,一直把他当做大哥.每一次谈话都从中收获颇丰,增长不少见识.也是A同学让我变得比以前开朗.同一件事情,他比较乐观,我比较悲观:他看到最多的是希望,我看到最多的是绝望