TypeScript学习笔记 (一)基础特性
一. 字符串新特性
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学习笔记 (一)基础特性的更多相关文章
- TypeScript学习笔记之基础类型
从今天开始学习typescript了,记录ts学习点滴,最后,使用ts结合nodejs开发后端应用,一起共勉吧: typescript最新版本2.6,所有演示代码均基于此版本 开始之前确定安装了如下n ...
- C#学习笔记(基础知识回顾)之值类型和引用类型
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
- Java后端高频知识点学习笔记1---Java基础
Java后端高频知识点学习笔记1---Java基础 参考地址:牛_客_网 https://www.nowcoder.com/discuss/819297 1.重载和重写的区别 重载:同一类中多个同名方 ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- bootstrap学习笔记之基础导航条 http://www.imooc.com/code/3111
基础导航条 在Bootstrap框中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多.我们先来看导航条中最基础的一个--基础导航条. 使用方法: 在制作一个基础导航条时,主要分 ...
- Django学习笔记(基础篇)
Django学习笔记(基础篇):http://www.cnblogs.com/wupeiqi/articles/5237704.html
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记六:接口
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
随机推荐
- Golang channel 特性
最近在项目中遇到了 Go channel 的一些问题,在此记录下 close channel 的一些特性. 关闭channel ch := make(chan bool) close(ch) clos ...
- [转载]RabbitMQ消息可靠性分析
有很多人问过我这么一类问题:RabbitMQ如何确保消息可靠?很多时候,笔者的回答都是:说来话长的事情何来长话短说.的确,要确保消息可靠不只是单单几句就能够叙述明白的,包括Kafka也是如此.可靠并不 ...
- Redis的安装、配置及测试
Redis下载地址 https://github.com/MicrosoftArchive/redis/releases(如果需要安装windows服务版本,需要下载msi格式) 或 https:// ...
- Jquery简单使用
展示:$("#id").show(); 隐藏:$("#id").hide();
- SQL语句常用约束类型
常用五类约束: not null:非空约束,指定某列不为空 unique: 唯一约束,指定某列和几列组合的数据不能重复 primary key:主键约束,指定某列的数据不能重复.唯一 forei ...
- mysql 定期删除表中无用数据
MySQL5.1.x版本中引入了一项新特性EVENT,定期执行某些事物,这可以帮助我们实现定期执行某个小功能,不在依赖代码去实现. 我现在有一张表,这张表中的数据有个特点,每天都会有大量数据插入,但是 ...
- mysql 命令总结 每天5个
mysql -u root mysql> use mysql; mysql> UPDATE user SET Password = PASSWORD('newpass') WHER ...
- Walle,一个开源的web代码发布管理系统
前言 Walle 一个web部署系统工具,可能也是个持续发布工具,配置简单.功能完善.界面流畅.开箱即用!支持git.svn版本管理,支持各种web代码发布,静态的HTML,动态PHP,需要编译的JA ...
- js 获取当前的网址
http://www.xcx.cc/index.php/home/index/ind?idf=12321var $cur_url=window.location.href; //获取全部的网址var ...
- java多线程快速入门(十七)
多线程通讯实例(必须要有多个线程.必须要管理同一个变量:线程A生产一个变量,线程B消费一个变量) package com.cppdy; class User { public String usern ...

