计算机编程是一个实践性很强的“游戏”,对于新入门者,好多人都在想,哪一门编程语言最好,我该从哪开始呢?个人回答是:语言不重要,理解编程思想才是最关键的!全部编程语言都支持的那一部分语言特性(核心子集)才是最核心的部分。因此从实际状况出发,选一门你看着顺眼,目前比较贴近你要作的工做或学习计划的计算机语言,开始你的编程之旅吧。javascript
业界有一个二八规律,其实编程也同样,你们回头看看,咱们写了那么多代码,是否是大部分都属于这门语言的核心子集部分?也就是说,咱们只要掌握了一门语言的核心子集,就能够开始工做了。java
咱们要尽可能多的了解不一样的编程范式,这样能拓展咱们的思路。学习语言的时候,有时能够同时学时两门编程语言,对比学习两门语言的同一律念,让咱们可以更容易且深刻的理解它。我学习javascript的闭包时,开始怎么也理解不了;我就找了本python书,对比着学,才慢慢的理解了。node
编译型语言 VS 解释型语言python
动态结构语言 VS 静态结构语言git
强类型语言 VS 弱类型语言github
各类类型的语言,咱们都要有所了解,这样才可以全面的理解编程语言中的各类特性,在面对特定的问题时,才能作出正确的选择。typescript
项目需求:统一处理不一样图形(圆形、长方形、矩形等)的面积计算。编程
1.Circle类讲解数据封装概念,将半径与名称封装在类内部,并提供访问方法swift
export default class Circle { private r: number private name: string constructor(r: number) { this.r = r this.name = 'Circle' } getName(): string { return this.name } area(): number { return Math.pow(this.r, 2) * PI } }
2.长方形与矩形讲解继承概念segmentfault
//rectangle.ts export default class Rectangle { private a: number private b: number private name: string constructor(a: number, b: number, name?: string) { this.a = a this.b = b if (name === undefined) this.name = 'Rectangle' else this.name = name } getName(): string { return this.name } area(): number { return this.a * this.b } } //square.ts export default class Square extends Rectangle { constructor(a: number) { super(a, a, 'Square') } }
3.实例统一处理不一样的形状一块儿计算面积,讲解多态概念
let shapes = Array<any>() shapes.push(new Circle(2)) shapes.push(new Rectangle(5, 4)) shapes.push(new Square(3)) shapes.forEach((element) => { console.log(`shape name: ${element.getName()}; shape area: ${element.area()}`) })
加入接口,规范形状对外部分操做要求,让错误提前到编译阶段被发现
export default interface IShape { getName(): string; area(): number }
用实例来讲明怎样理解函数是一等公民,去掉咱们习觉得常的函数外层包裹
let printData = function(err: any, data: string): void { if (err) console.log(err) else console.log(data) } let doAjax = function (data: string, callback: Function): void { callback(null, data) } //咱们习觉得常的使用方式 doAjax('hello', function(err, result){ printData(null, result) }) //真正理解了函数是一等公民后,你会这样用 doAjax('hello', printData)
在实践过程,处理异步调用容易误解的一个重要概念,异步函数执行的具体流程是什么样的?
let pf = function(data: string, n: number, callback: Function) { console.log(`begin run ${data}`) setTimeout(() => { console.log(`end run ${data}`) callback(null, data) }, n) } let p = Promise.promisify(pf); (async () => { let ps = Array<any>() ps.push(p('1111', 2000)) ps.push(p('2222', 1000)) ps.push(p('3333', 3000)) await Promise.all(ps) })()
以上是《运用typescript进行node.js后端开发精要》视频课程的概要,有兴趣的童鞋能够去观看视频。
传送门: 快来学习Typescript,加入会编程、能编程、乐编程的行列吧!