能用js重写的都会被typescript重写

栏目: JavaScript · 发布时间: 5年前

内容简介:导语: TypeScript从今天数以百万计的JavaScript开发者所熟悉的语法和语义开始。使用现有的JavaScript代码,包括流行的JavaScript库,并从JavaScript代码中调用TypeScript代码没用过typescript可能会下面的两个疑问:

导语: TypeScript从今天数以百万计的JavaScript开发者所熟悉的语法和语义开始。使用现有的JavaScript代码,包括流行的JavaScript库,并从JavaScript代码中调用TypeScript代码

能被js重写的中奖被typescript重写

能用js重写的都会被typescript重写

没用过typescript可能会下面的两个疑问:

  1. javascript越来越完善,还有没有必要学习typescript?

  2. typescript学习的成本如何呢?

1. typescript的生态

针对这两个疑问我们来稍微地解答下:

typescript是javascript的超集,所有es2016, es2017, es2018等等,包括未来的标准就会被包含在typescript中:

能用js重写的都会被typescript重写

尤其在多人合作的项目中,typescript能强制开发者的标准,对其他的开发者能天然的做到文档提示的功能,例如这段代码:

/**
 * 判断当前商品的状态
 * qcoin/object/redpack/flow类型的商品里,1表示待领取,2表示已领取;
 * code,url等类型的商品,会直接进行发送,1就表示已领取,没有状态2
 * 统一后:state: 0:未成功, 1:待领取, 2:已领取, 3:已过期, 4:已下架
 *
 * @param state 当前商品的状态
 * @param type qcoin(QB), object(实物), code(兑换码), url(纯链接), redpack(现金红包), flow(流量型)
 */
const getOrderState = (state: number, type: string): number => {
    if (state === 1 && (type === 'code' || type === 'url')) {
        return 2;
    }
    return state;
};

在调用 getOrderState 方法时,能直接提示该方法有几个参数,每个参数的类型是什么,返回的数据是什么类型的,如果错误地调用了该方法,则在编写阶段就会提示出来!

同时通过Google的搜索量上来看,大概有1850万的搜索结果,typescript的生态是越来越好。

能用js重写的都会被typescript重写

而且,typescript对angular和react有着优良的支持,在使用react编写代码的过程中,同时尤雨溪也在用typescript对Vue3.0进行重写。之前尤雨溪也在知乎上说压flow压错了宝,typescript真香 https://www.zhihu.com/question/310485097/answer/591869966

2. typescript的学习成本

typescript的学习非常的低,针对一些平常的操作,随手就可以写上相应的类型。

function sum(a: number, b:number): number {
    return a + b;
}
sum(23, 56);

针对比较复杂的数据类型,可以通过 interface 来实现:

interface GoodsItem {
    cost: number; // 现价
    cover: string; // 图片
    customer_service: string; // 规则
    desc: string; // 描述
    discount_score: number; // 积分价格
    icon_url: string; // icon
    prize_enname: string;
    prize_zhname: string;
    rule: string[] | string; // 规则名
    score_cost: number; // 积分兑换的价格
    sending_count_today: number; // 今日发放的上限
    sending_count_total: number; // 总量
    short_name: string; // 短名称
    sort: number; // 权重
    state: number; // 状态
    type: string; // 类型
    validity: string; // 有效期
}

let goods: GoodsItem; // 使用GoodsItem来定义goods变量

当然,对一些更加复杂的,比如泛型等则需要特意地学习下。这里可以看下知乎上总结的 typescript骚操作

3. 总结

最开始写页面时,使用的是Vue,那时候就是纯按照教程上的方式来编写的,例如data, computed, watch等方法。在后来的项目中,使用 vue-property-decorator 来进行实现,虽然对于默认的对象书写方式有类型推导支持,但里面的实现绕了很多弯。问题的本质其实很简单:因为当初 API 的设计根本就没有考虑类型系统,Vue2.x对typescript支持的非常不好,我们也期待Vue3.0出现的变更。最近改用react写新的项目时,typescript发挥它很大的优势,类型提醒、数据提示(如dom对象下的方法)等,支持地都特别棒.

自从接触了typescript,总想着把之前所有用javascript实现的代码再用typescript重构一下。但是,历史代码能不动还是别动了,在以后新的项目中好好使用typescript即可!


以上所述就是小编给大家介绍的《能用js重写的都会被typescript重写》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

众包

众包

杰夫·豪 / 牛文静 / 中信出版社 / 2009-6 / 36.00元

本书是继《长尾理论》之后的重要商业书籍。本书回答了《长尾理论》遗留的一大悬念。在长尾中作者详细阐述了长尾之所以成为可能的一个基础,但是没有详细解读,本书就是对这一悬念的详细回答,是《长尾理论》作者强力推荐的图书,在国际上引起了不小的轰动,“众包”这一概念也成为一个标准术语被商界广泛重视。本书大致分为三个部分,介绍众包的现在、过去和未来,解释了它的缘起、普遍性、力量以及商业上的适用性,通俗易懂,精彩......一起来看看 《众包》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试