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. python 验证码识别

    一.python识别简单验证码: 代码: ''' func:实现简单验证码获取 ''' import pytesseract from PIL import Image #首先通过Image打开一个图 ...

  2. 如何设置 ssh secure shell 支持中文

    只需要设置下/etc/sysconfig/i18n 文件内容如清单 1 所示. 清单 1. 文件内容 1 2 3 LANG="zh_CN.GB18030" SUPPORTED=&q ...

  3. Electron入门笔记(一)-自己快速搭建一个app demo

    Electron学习-快速搭建app demo 作者: 狐狸家的鱼 Github: 八至 一.安装Node 1.从node官网下载 ,最好安装.msi后缀名的文件,新手可以查看安装教程进行安装. 2. ...

  4. CF1107

    我哭了......什么鬼题我怎么都不会...果然教育场是教我做人的... 打的虚拟赛,286名...太菜了.EF都是可做题我都没写出来...G题大水题我居然没看... B:设g(i) = i的各位数字 ...

  5. (转)Java并发编程:线程池的使用

    背景:线程池在面试时候经常遇到,反复出现的问题就是理解不深入,不能做到游刃有余.所以这篇博客是要深入总结线程池的使用. ThreadPoolExecutor的继承关系 线程池的原理 1.线程池状态(4 ...

  6. FindExecutable:查找与一个指定文件关联在一起的程序的文件名

    百度百科:http://baike.baidu.com/view/1285880.htm ------------------------------------------------------- ...

  7. malloc() 和 calloc()有啥区别

    calloc()在动态分配完内存后,自动初始化该内存空间为零(会将所分配的内存空间中的每一位都初始化为零). 而malloc()不初始化,里边数据是随机的垃圾数据. calloc(size_t n, ...

  8. 跟我一起使用android Studio打包react-native项目的APK

    使用的是react-native的hello-world项目 第一步:创建项目 npm install -g yarn react-native-cli react-native init Aweso ...

  9. spring中获取当前项目的真实路径

    总结: 方法1: WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext ...

  10. 如何自学 Android 的?

    http://android.jobbole.com/83380/ 1. Java知识储备 本知识点不做重点讲解:对于有基础的同学推荐看<Java编程思想>,巩固基础,查漏补全,了解并熟悉 ...