一. 字符串新特性

 1. 多行字符串

  var str = ``; 

 2. 字符串模板

  

var world = "world";
var str = `hello ${world}`;

 3. 自动拆分字符串

  

var myName:string = 'ts';
var myAge:number = 18;
var test = function(temp, name:string, age:number){
  console.log(temp);
  console.log(name);
  console.log(age);
};
test`My name is ${myName}, and i'm ${myAge} years old`;

二、类型

1. 变量类型

var a: string = "";
var b: number = 1;
var c: boolean = true;
var d: any;
function test(name:string): void { }

2. 可选参数和默认参数

function test(a:string, b?: number, c: number = 23){
      console.log(a);
console.log(b);
console.log(c);
} test("jojo");

三、函数新特性

1. Rest and Spread 操作符

  用来声明任意数量的参数

// 函数定义是运用
function func1(...args){
args.forEach(function(arg){
console.log(arg);
});
}; func1(1,2,3);
func1(1,2,3,4,5,6);


// 函数调用时运用
function func2(a,b,c){
console.log(a);
console.log(b);
console.log(c);
} var args1 = [1,2];
func2(...args1);
var args2 = [4,5,6,7,8,9];
func2(...args2);

2. generator函数

  控制函数的执行过程,手工暂停和恢复代码执行

function* doSth(){
console.log("start");
yield;
console.log("finish");
}
var func1 = doSth(); func1.next();
func1.next();

function* getStockPrice(stock){
while(true){
yield Math.random()*100;
}
}; var priceGenerator = getStockPrice("IBM");
var limitPrice = 12;
var price = 100;
while(price > limitPrice){
price = priceGenerator.next().value;
console.log(`the generator return ${price)`);
}; console.log(`buy at ${price}`);

3. 析构表达式

  通过表达式将对象或数组拆解成任意数量的变量

function getStock(){
return {
code: "IBM",
price: {
price1: 100,
price2: 200
},
aaa: "xixi",
bbb: "haha"
}
} // js
var stock = getStock();
var code = stock.code;
var price = stock.price; // ts
var {code: codeAlias, price, price:{price2}} = getStock(); // 花括号中的变量要和方法中变量名字对应, codeAlias为别名 console.log(codeAlias);
console.log(price);
console.log(price2);

var array1 = [1,2,3,4,5,6,7];

var [,,number3,number4,...others] = array1;
console.log(number3);
console.log(number4);
console.log(others);
var array1 = [1,2,3,4,5,6,7];

function doSth([,,number3,number4,...others]){
console.log(number3);
console.log(number4);
console.log(others);
}; doSth(array1);

四、表达式和循环

1. 箭头表达式

  用来声明匿名函数,消除传统匿名函数的this指针问题

// 单行
var sum = (arg1, arg2) => arg1 + arg2;
// 多行
var sum1 = (arg1, arg2) => {
return arg1 + arg2;
};
// 无参数
var sum2 = () => {
console.log("无参数箭头表达式");
};
// 单个参数
var sum3 = arg1 => {
console.log(arg1);
};
console.log(sum(1,2));
console.log(sum1(1,2));
console.log(sum2());
console.log(sum3(2)); var myArray = [1,2,3,4,5,6,7,8];
console.log(myArray.filter(value=>value%2 == 0));

function getStock(name:string){
this.name = name; setInterval(function(){
console.log("name is " + this.name);
},1000); setInterval(()=>{
console.log("name is " + this.name);
}, 2000);
}; var stock = new getStock("jojo");

2. for of

var myArray = [1,2,3,4,5];

myArray.desc = "a array"; // js

myArray.forEach(value=>console.log(value));
for(var n1 in myArray){
console.log(n1);
}
for(var n2 in myArray){
console.log(myArray[n2]);
}
for(var n3 of myArray){
console.log(n3);
}
for(var n4 of "i'm an array"){
console.log(n4);
}

TypeScript学习笔记 (一)基础特性的更多相关文章

  1. TypeScript学习笔记之基础类型

    从今天开始学习typescript了,记录ts学习点滴,最后,使用ts结合nodejs开发后端应用,一起共勉吧: typescript最新版本2.6,所有演示代码均基于此版本 开始之前确定安装了如下n ...

  2. C#学习笔记(基础知识回顾)之值类型和引用类型

    一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...

  3. Java后端高频知识点学习笔记1---Java基础

    Java后端高频知识点学习笔记1---Java基础 参考地址:牛_客_网 https://www.nowcoder.com/discuss/819297 1.重载和重写的区别 重载:同一类中多个同名方 ...

  4. MyBatis:学习笔记(1)——基础知识

    MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...

  5. bootstrap学习笔记之基础导航条 http://www.imooc.com/code/3111

    基础导航条 在Bootstrap框中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多.我们先来看导航条中最基础的一个--基础导航条. 使用方法: 在制作一个基础导航条时,主要分 ...

  6. Django学习笔记(基础篇)

    Django学习笔记(基础篇):http://www.cnblogs.com/wupeiqi/articles/5237704.html

  7. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  8. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  9. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  10. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

随机推荐

  1. sqlserver2008r2还原完整备份和差异备份及自动删除过期备份

    本文主要内容: 还原完整和差异备份 删除超过1个月的备份 注:保证SQL Server代理服务启动,并把服务设置为自动启动 完整备份和差异备份还原原理: 差异备份是完整备份的补充,只备份上次完整备份后 ...

  2. Kubernetes重要概念理解

    Kubernetes重要概念理解 kubernetes是目前最主流的容器编排工具,是下一代分布式架构的王者.2018年的kubernetes第一个版本1.10已经发布.下面整理一下,kubernete ...

  3. PHP程序守护进程化

    一般Server程序都是运行在系统后台,这与普通的交互式命令行程序有很大的区别.glibc里有一个函数daemon.调用此函数,就可使当前进程脱离终端变成一个守护进程,具体内容参见man daemon ...

  4. 【原创】大数据基础之Benchmark(1)HiBench

    HiBench 7官方:https://github.com/intel-hadoop/HiBench 一 简介 HiBench is a big data benchmark suite that ...

  5. 性能工具之JMeter+InfluxDB+Grafana打造压测可视化实时监控【转】

    概述 本文我们将介绍如何使用JMeter+InfluxDB+Grafana打造压测可视化实时监控. 引言 我们很多时候在使用JMeter做性能测试,我们很难及时察看压测过程中应用的性能状况,总是需要等 ...

  6. [转]Navicat Premium 12试用期的破解方法

    link: https://blog.csdn.net/Jason_Julie/article/details/82864187 ref: https://www.jianshu.com/p/42a3 ...

  7. 程序包管理dpkg、apt-get、服务端openssh-server与客户端Xshell设置及lrzsz安装使用

    一.程序包管理器 dpkg.apt-get 1.dpkg 安装:sudo dpkg -i cmatrix_1.2a-5build3_amd64.deb 卸载:sudo dpkg -r cmatrix ...

  8. Day7--------------IP地址与子网划分

    1.ip地址:32位    172.16.45.10/16 网络位:前十六位是网络位 主机位:后16位是主机位 网络地址:172.16.0.0 主机地址:172.16.45.10 A类: 0NNNNN ...

  9. linux流量异常查看哪些程序占用的

    Linux下进程/程序网络带宽占用情况查看工具 -- NetHogs   http://www.vpser.net/manage/nethogs.html   来自.  最后略有修改 之前VPS侦探曾 ...

  10. 硬盘性能测试工具fio

    如何衡量云硬盘的性能 IOPS:每秒读/写次数,单位为次(计数).存储设备的底层驱动类型决定了不同的 IOPS. 吞吐量:每秒的读写数据量,单位为MB/s. 时延:IO操作的发送时间到接收确认所经过的 ...