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 ...
随机推荐
- 码云 Git No network connection
背景 git,好久没用了都.心血来潮还是赶紧熟悉下吧.果不其然,每次要熟悉或开始一个东西,立马就出现问题.本来好好的环境竟然不行了,搞定后感觉应该是换了网络环境的事.这倒次要,主要让我想起了最初学习g ...
- #ifndef#define#endif的用法(整理)
[转] #ifndef#define#endif的用法(整理) 原作者:icwk 文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都in ...
- python多线程threading下载示例
#coding:utf-8 # windows中测试不通过,下载的图片不完整 # 通过多线程下载图片 import requests import threading class downloader ...
- Centos 6 安装FreeSWITCH
为了安装FreeSWITCH ,我选择的Linux是CentOS,目前最新的Centos版本是6.具体安装CentOS的是步骤详见网上的其它资料,本节的主要目的是为了记录FreeSWITCH的安装过程 ...
- 常用的ORM框架
现在,很多项目使用ORM的框架构架实现数据持久层,下面列举一些常用的ORM框架有,后续分节介绍. Java:Hibernate和Mybatis(前身iBatis) .Net:EF6与EFCore.Da ...
- HDU 1102
最小生成树 对于必须要加入的边, 让其边权为0 即可 Prim : #include<iostream> #include<cstring> #include<cstdi ...
- MySql 使用规范推荐(转)
在java应用开发中深知数据库的重要性,绝大多数情况下数据库的性能决定了程序的性能,前期如果埋下的坑越多到后期会成为整个程序的瓶颈,所以希望java开发者一定要重视!!!! 一.基础规范 1.使用In ...
- 28)django-form+ajax实现验证
form+ajax实现验证 #obj.errors返回的是ErrorDict,不是字典(虽然继承字典) #obj.errors.as_json() 返回的字符串(前端要连续反解两次) #obj.err ...
- vue 之 引入elementUI(两步走)
1.npm 引入elementUI npm i element-ui -S 2.在main.js文件中全局引入 import ElementUI from 'element-ui' import 'e ...
- winform中textbox提示框
在winform中向textbox输入内容时下面有提示信息,效果如图所示: private void Form1_Load(object sender, EventArgs e) { Auto ...

