https://learnxinyminutes.com/docs/zh-cn/typescript-cn/

https://www.tslang.cn/docs/handbook/basic-types.html

姊妹篇 《javascript 快速学习》http://www.cnblogs.com/chenhui7373/p/8901933.html

【REPL环境】

去npm搜索 typescript 就有 ts-node

var isDone: boolean = false;
var lines: number = 42;
var name2: string = "Anders";
var notSure: any = 4;
var list: number[] = [1, 2, 3];
// 枚举
enum Color { Red, Green, Blue };
var c: Color = Color.Green;
// 最后 void 用于函数没有任何返回
function bigHorrible(): void {
console.log("Hi");
}
// …………………………………………………………………………………………………………
// 归纳以上,类型有 boolean string number number[] any enum void
// 加上 JS 类型 object undefined null 非数字(NaN、Infinity、-Infinity)
// …………………………………………………………………………………………………………
var f1 = function (i: number): number { return i * i; }// 以下函数和f1等价
var f2 = function (i: number) { return i * i; }// 推断返回类型
var f3 = (i: number): number => { return i * i; }// 箭头表达式
var f4 = (i: number) => { return i * i; }// 推断返回类型
var f5 = (i: number) => i * i;// 单行可以这么干
// …………………………………………………………………………………………………………
// 归纳以上,为了发挥TypeScript威力,f1和f3的写法都是推荐的,因为这样类型是明确的不用推断
// …………………………………………………………………………………………………………
interface Person {
name: string;
// ?标识 表示这是可选的属性
age?: number;
move(): void;
}
// 实现接口只要结构体相同就可以了
var p: Person = { name: "Bobby", move: () => { } };
var validPerson: Person = { name: "Bobby", age: 42, move: () => { } };
// var invaildPerson: Person = {name:"Bobby",age:true};
// …………………………………………………………………………………………………………
// 归纳以上,实现接口只要结构体相同就可以了,另外接口声明可以用 ? 标识可选属性
// 这样子的话,接口就成为我们 Object 的【规范】,规范用来定义项目 让多人协作合理化
// …………………………………………………………………………………………………………
// 接口描述一个函数类型 特别像 Java 8 中的 FunctionalInterface
interface SearchFunc{
(source:string,subString:string):boolean;
}
var mySearch:SearchFunc;// 这里挺怪的 不过说明了参数类型更重要
mySearch = function(src:string,sub:string){
return src.search(sub)!=-1;
}
// …………………………………………………………………………………………………………
// 归纳以上,这样子的话 我们就可以根据接口去实现方法了 ,接口成为了函数规范
// …………………………………………………………………………………………………………
// 整个类成员默认就是公共的 public
class Point {
x: number;
// 这里y声明为public 自动多一个成员不需要我们手动再声明
constructor(x:number,public y:number=0){
this.x = x;
}
dist(){return Math.sqrt(this.x * this.x + this.y * this.y);}
static origin = new Point(0,0);
}
class Point3D extends Point{
constructor(x:number,y:number,public z:number=0){
super(x,y);//必须显示调用
}
// override
dist(){
var d = super.dist();
return Math.sqrt(d*d+this.z*this.z);
}
}
// …………………………………………………………………………………………………………
// 归纳以上,演示了 类和类之间的【继承】 【重写方法】 【可重用目的】
// …………………………………………………………………………………………………………
// 模块
module Geometry{
export class Square {
constructor(public sideLength:number = 0){
}
area(){
return Math.pow(this.sideLength,2);
}
}
}
// "."可以作为子模块的分隔符
var s1 = new Geometry.Square(5);
// 引入模块并定义本地别名
import G = Geometry;
var s2 = new G.Square(10);
// …………………………………………………………………………………………………………
// 归纳以上,JS本身很像C external 去暴露给外部,通过这样我们可以写【模块化】代码
// …………………………………………………………………………………………………………
// 泛型
// 类
class Tuple<T1,T2>{
constructor(public item1:T1,public item2:T2){
}
}
interface Pair<T>{
item1:T;
item2:T;
}
var pairToTuple = function<T>(p:Pair<T>){
return new Tuple(p.item1,p.item2);
}
var tuple = pairToTuple({item1:'hello',item2:'world'});
// …………………………………………………………………………………………………………
// 归纳以上,最重要的思想 泛型让我们可以把代码更加【通用】进一步更【复用】
// …………………………………………………………………………………………………………
// 其他:引用定义文件
// / <reference path="jquery.d.ts" />
// 模板字符串(使用反引号的字符串)
// 嵌入变量的模板字符串
var name3 = 'Typrone';
var greeting = `Hi ${name3}, how are you?`
console.log(greeting);

TypeScript 快速学习的更多相关文章

  1. Angular快速学习笔记(2) -- 架构

    0. angular 与angular js angular 1.0 google改名为Angular js 新版本的,2.0以上的,继续叫angular,但是除了名字还叫angular,已经是一个全 ...

  2. Typescript快速入门

    目录 什么是Typescript 为什么学习Typescript 快速搭建开发环境 1.安装node.js 2.使用node自带的npm安装Typescript编译器 3.配置vscode编辑环境 4 ...

  3. 60分钟Python快速学习(给发哥一个交代)

    60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...

  4. LinqPad工具:帮你快速学习Linq

    LinqPad工具:帮你快速学习Linq 参考: http://www.cnblogs.com/li-peng/p/3441729.html ★:linqPad下载地址:http://www.linq ...

  5. 快速学习C语言一: Hello World

    估计不会写C语言的同学也都听过C语言,从头开始快速学一下吧,以后肯定能用的上. 如果使用过其它类C的语言,如JAVA,C#等,学C的语法应该挺快的. 先快速学习并练习一些基本的语言要素,基本类型,表达 ...

  6. 【Java线程池快速学习教程】

    1. Java线程池 线程池:顾名思义,用一个池子装载多个线程,使用池子去管理多个线程. 问题来源:应用大量通过new Thread()方法创建执行时间短的线程,较大的消耗系统资源并且系统的响应速度变 ...

  7. 【Java的JNI快速学习教程】

    1. JNI简介 JNI是Java Native Interface的英文缩写,意为Java本地接口. 问题来源:由于Java编写底层的应用较难实现,在一些实时性要求非常高的部分Java较难胜任(实时 ...

  8. 快速学习bootstrap前台框架

    W3c里的解释 使用bootstrap需要注意事项 1.  在html文件第一行要加上<!doctype html>[s1] 2.  导入bootstrap.min.css文件 3.  导 ...

  9. C#快速学习笔记(译)

    下面是通过代码快速学习C#的例子. 1.学习任何语言都必定会学到的hello,world! using System; public class HelloWorld { public static ...

随机推荐

  1. NOI2017蔬菜(贪心)

    小 N 是蔬菜仓库的管理员,负责设计蔬菜的销售方案. 在蔬菜仓库中,共存放有 n 种蔬菜,小 N 需要根据不同蔬菜的特性,综合考虑各 方面因素,设计合理的销售方案,以获得最多的收益. 在计算销售蔬菜的 ...

  2. linux环境sed命令实例学习

    命令简介: sed(Stream Editor)被称作流编辑器.linux命令环境的“三剑客”(grep,sed,awk)之一,功能强大,可以根据命令来处理数据流中的数据,命令可以在命令行中,也可以出 ...

  3. A1130. Infix Expression

    Given a syntax tree (binary), you are supposed to output the corresponding infix expression, with pa ...

  4. java面试——问题回溯

    背景:用来记录面试过程中遇到的问题,在这里进行记录,下次不要犯同样的错误. 迪普科技 Linux服务器下的top命令 #动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / to ...

  5. python pip NameError:name 'pip' is not defined”

    https://www.jianshu.com/p/f57f98ebcb21 问题: 如果直接在命令行里面输入pip或者pip3,提示:(如图1) “NameError:name 'pip' is n ...

  6. mysql数据库的优化和查询效率的优化

    一.数据库的优化 1.优化索引.SQL 语句.分析慢查询: 2.设计表的时候严格根据数据库的设计范式来设计数据库: 3.使用缓存,把经常访问到的数据而且不需要经常变化的数据放在缓存中,能节约磁盘IO: ...

  7. 将vcf文件转化为plink格式并且保持phasing状态

    VCFtools can convert VCF files into formats convenient for use in other programs. One such example i ...

  8. 线程相关函数(1)-pthread_create(), pthread_join(), pthread_exit(), pthread_cancel() 创建取消线程

    一. pthread_create() #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_a ...

  9. (转载) python3: beautifulsoup的使用

    转载: https://www.cnblogs.com/chimeiwangliang/p/8649003.htmlfrom bs4 import BeautifulSoup import reque ...

  10. root登陆欢迎界面设置

    root登陆欢迎界面设置 #!/bin/bash echo -ne "\033[0;36m" cat<<EOF _oo0oo_ (| -_- |) \ = / ___/ ...