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. 【linux】/dev/null作用和/dev/random

    一.  /dev/null /dev/null属于字符特殊文件,它属于空设备,是一个特殊的设备文件,它会丢弃一切写入其中的数据,写入它的内容都会永远丢失,而且没有任何可以读取的内容. 我们用file命 ...

  2. Typescript学习笔记(五) 模块机制

    javascript从es5之前都缺少一种模块机制,无法通过js引入文件,于是requirejs等等的加载器应运而生.这些加载器的使用也并不统一,产生了amd,commonjs,umd等等的规范,各有 ...

  3. ftp sun jdk自带

    package com.italktv.colnv.stat.util; import java.io.File; import java.io.FileInputStream; import jav ...

  4. A1112. Stucked Keyboard

    On a broken keyboard, some of the keys are always stucked. So when you type some sentences, the char ...

  5. (转)MySQL中In与Exists的区别

    背景:总结mysql相关的知识点. 如果A表有n条记录,那么exists查询就是将这n条记录逐条取出,然后判断n遍exists条件. select * from user where exists s ...

  6. 第二十六节,滑动窗口和 Bounding Box 预测

    上节,我们学习了如何通过卷积网络实现滑动窗口对象检测算法,但效率很低.这节我们讲讲如何在卷积层上应用这个算法. 为了构建滑动窗口的卷积应用,首先要知道如何把神经网络的全连接层转化成卷积层.我们先讲解这 ...

  7. java 中,new一个新对象时,是先给成员变量赋上初值后 再来调用类中的构造函数的。

    今天学习时法现一个问题,我们定义了一个Test类,在主类中new了一个他的对象,发现:在新建对象中所有的成员变量是先给定了默认初值的:0,null或者false, 之后再调用的构造函数.(如果变量是由 ...

  8. POJ 2253 Frogger (Floyd)

    Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions:57696   Accepted: 18104 Descript ...

  9. (贪心 线段不相交问题)codeVs 1214 线段覆盖

    题目描述 Description 给定x轴上的N(0<N<100)条线段,每个线段由它的二个端点a_I和b_I确定,I=1,2,……N.这些坐标都是区间(-999,999)的整数.有些线段 ...

  10. Go结构体

    当我们要表示同一种数据类型时候,可以用到数组,切片和字典. 当我们要表示不同的数据类型呢?这时候就要用到结构体了 一:定义struct 关键字 type 和 struct 来定义结构体 type st ...