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】Linux系统中的权限详解

    我们linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险.所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要. 一.文件基本权限 首先看下linux ...

  2. 20165223 week6测试错题总结

    由于时间预估错误及手机自身卡顿问题,虽然已经作答完成,却在最后提交时出现错误,错失提交时间,所以没能按时提交答案,也就没有纠错,以下仅凭印象列出错题: Q1:若超出JVM运行能力,如"byt ...

  3. MySQL -- 单行函数

    大小写控制函数 SELECT LOWER('HelloWrold'), UPPER('HelloWorld'); 字符控制函数 SELECT REPLACE('abcdababab','p','m') ...

  4. vue学习笔记(二)- 数据绑定、列表渲染、条件判断

    vue的数据绑定和列表渲染的造轮子 GitHub:八至 作者:狐狸家的鱼 双向数据绑定 Vue中数据的双向绑定-v-model 数据->页面 页面->数据 适用:input.select. ...

  5. NLog类库使用探索——编程配置

    以编程的方式配置,这是我项目中的,我都不知道为什么使用编程.直接配置不很好吗,估计他也没有研究.直接上步骤和代码: 创建一个LoggingConfiguration对象,用来保存配置信息 至少创建一个 ...

  6. Echarts关于仪表盘

    https://blog.csdn.net/zc763375777/article/details/53837391 来无事,制作不一样的图标一发,领导让把仪表盘做成百分条,我TM也是醉了,大体样式如 ...

  7. IE jQuery ajax 请求缓存问题

    我最近在IE下测试开发我们的系统,经常出现改过的jsp页面,刷新IE后也不能显示,这就是IE的缓存问题,查了一下百度,说是IE9在ajax进行请求时,如果两次请求url相同,则不会请求服务器,而是从缓 ...

  8. 让mysql监听ipv4

    系统:centos7 关闭ipv6方法: 方法1:编辑/etc/sysctl.conf文件,添加如下两行到文件 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6. ...

  9. 设计模式_策略模式_在Spring中的应用

    一.理论 在spring中经常有读取配置文件的需求,这里就会用到一个Spring提供的Resource接口 Resource 接口是具体资源访问策略的抽象,也是所有资源访问类所实现的接口.Resour ...

  10. Java Web之JSP

    什么是JSP? JSP就是一个可以写Java代码的HTML页面 JSP是什么? JSP是Servlet,JSP的本质就是Servlet Tomcat的web.xml文件下有这样几段代码: 看到下面的通 ...