一. 字符串新特性

 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. MinGW GCC 7.2.0 2017年8月份出炉啦

    GCC720-for-MSYS2.7z for x86 x64 63.72 MB 发布日期: 2017-08-14 下载地址: https://forum.videohelp.com/attachme ...

  2. vue路由vue-router的使用

    对于单页应用,官方提供了vue-router进行路由跳转的处理. 安装 基于传统,我更喜欢采用npm包的形式进行安装. npm install vue-router --save 当然,官方采用了多种 ...

  3. maven项目导入war包

    导入war包,使用war包中的类和静态资源(css,js,包含jsp等) A项目是被导入的war工程,B项目是需要A项目的一个工程. 在<build>中 <resources> ...

  4. T-SQL 数值函数

    MS SQL Server数字函数可以应用于数值数据,并返回数值数据. 下面是带有示例的数值函数列表. ABS() 输出给定值的绝对值. 例 以下查询将输出-22的绝对值:22. Select ABS ...

  5. 【原创】数据库基础之Mysql(3)mysql删除历史binlog

    mysql开启binlog后会在/var/lib/mysql下创建binlog文件,如果手工删除,则下次mysql启动会报错: mysqld: File './master-bin.000001' n ...

  6. layui框架--关闭当前页面并刷新父页面

    //关闭当前页面 并刷新父页面 var index = parent.layer.getFrameIndex(window.name); parent.layer.close(index) windo ...

  7. Docker快速搭建WordPress博客网站

    WordPress WordPress是一个非常著名的PHP编写的博客平台,发展到目前为止已经形成了一个庞大的网站平台系统.在WP上有规模庞大的插件和主题,可以帮助我们快速建立一个博客甚至网站. 在W ...

  8. cdh5.15集群添加spark2.3服务(parcels安装)

    背景: 机器系统:redhat7.3:已经配置了http服务 集群在安装的时候没有启动spark服务,因为cdh5.15自带的spark不是2.0,所以直接进行spark2.3的安装 参考文档:htt ...

  9. Confluence 6 导入模板的定义

    模板是一个预先定义的页面,这个预先定义的页面可以在创建新页面的时候预先载入.模板能够给一个页面统一的样式或格式. 你可以在 Confluence 中创建你自己的模板,请查看页面 Create a Te ...

  10. Redis持久化概念

    redis持久化概念 Author:SimpleWu GitHub-redis 什么是持久化? 概念:把内存的数据保存在磁盘的过程. Redis的持久化? redis是内存数据库,它把数据存储在内存中 ...