Typescript初识及初步实践周报
初识typescriptTypescript算是最近比较流行的“语言”(强语言类型检测),有利于编写大型程序。strong typing貌似现在很多人比较认可。例如现在比较流行的Go以及新近的Kotlin。也是因为最近在使用antd而接触到,Angular2用的可能比较多。 为什么Typescript会火
前端最近几年成井喷式发展,mvc、mvvm、mvp各种框架层出不穷,但是就是这种井喷式的发展给前端注入了一些新的活力,前端未来的发展趋势也是逐渐的趋于规范化,遥想当年java不也经历过这么一段“动荡”的时期么。而javascript本身就是一个弱语言无法和java这种强语言类型进行比较,但是一个强语言类型带来的优势又是如此的鲜明--健壮、易维护...(干嘛让我写这么全~我又不是搞java的-。-)那么问题来了怎么才能圆jser的这么一个梦想呢?Typescript!虽然我不能保证Typescript能够长久的活下去但是在我看来这个思路是对的! 实例这里就不详细展开typescript的文档了,举个TS比较常用的例子。 interface TableProps<T>{ prefixCls?: string; dropdownPrefixCls?: string; rowSelection?: TableRowSelection<T>; pagination?: PaginationProps | boolean; size?: 'default' | 'small'; dataSource?: T[]; columns?: ColumnProps<T>[]; rowKey?: string | ((record: T,index: number) => string); ... } 定义了一个TableProps接口规范--用来检测当前使用props是否符合规范,可以理解为React中的propTypes类型校验。其中还使用了<T>泛型。 实践TS为了兼容jsx专门实现了tsx的文件,可以更方便的使用React。
当然babel已经可以解析ES6、ES7语法 { "compilerOptions": { "moduleResolution": "node","module": "commonjs","target": "es6","sourceMap": true,"allowSyntheticDefaultImports": true,"jsx": "react","lib": [ "dom","es2015.promise","es5","es2015.iterable","es2015.generator","es2015.symbol","es7"] },"exclude": [ "node_modules" ] } 这个并不算完,因为这里设置target为ES6--编译后的js为ES6。如果需要编译成ES5那么ts将不会把ES6中 { test: /srcpages(.*).(tsx|ts)/,use: [ 'bundle-loader?lazy','babel-loader','ts-loader',],}, 同时typescript作者将在2.3 (May 2017) Generator support for ES3/ES5。
使用场景:想在所有ts/tsx中引用一个辅助函数。(使用import太麻烦而且使用频率很高)。
这个算是一个小缺陷吧(这需要时间和积累),主流的框架或者插件是有@type的实现,但是很多小的框架是没有对应TS版本的,导致了很多小玩意在ts中玩不了,如果想玩需要用一些黑科技(自己声明一个d.ts版本....)举一个例子: 弊端说一下TS使用中的一些感觉不好的地方吧(用的比较浅显,纯属个人看法)。 showTotal?: (total: number) => React.ReactNode; 没有第二个参数,但是源码中是有的。所以如果想使用只能人工添加TS才不会报错 showTotal?: (total: number,range?: [number,number]) => React.ReactNode; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |