TypeScript 学习笔记
TypeScript的优势
- 支持ES6规范
- 强大的IDE支持
- Angular2的开发语言
IDE优势
类型检查
Typescript-在线complier
http://www.typescriptlang.org/play/index.html
Typescript-本地complier
安装node.js,npm
- npm install typescript
- tsc --version
字符串新特性
多行字符串``
ts
var content = `aaa
bbb
ccc`
js
var content = "aaa\nbbb\nccc";
字符串模板
ts
var myname = "zhai liang";var getname = function () {return "zhai liang";
}console.log(`<div>
<span>${myname}</span>
<span>${getname}</span>
</div>`);
js
var myname = "zhai liang";
var getname = function () {return "zhai liang";
};
console.log("<div>\n<span>" + myname + "</span>\n<span>" + getname + "</span>\n</div>");
参数的新特性
参数类型:在参数名称后面使用冒号来指定参数类型
声明类型
- string字符串
- any任何类型
- number数字
- boolean布尔类型true/false
- void方法不需要任何返回值
- 方法声明类型方法里的参数也可以声明类型
function test(name:string):string{return ""
}
自定义类型
class Preson {
name: string;
age: number;
}
var zhangsan:Person = new Person();
zhangsan.name = "zhangsan";
zhangsan.age = 18;
默认参数:在参数声明后面用等号来指定参数的默认值
var myname: string = "zhai liang";
function test(a: string, b: string, c: string='jojo') {console.log(a);console.log(b);console.log(c);
}
test('xxx', 'yyy', 'zzz');
test('xxx', 'yyy');
声明参数的默认值放在参数的最后一位
可选参数:在方法的参数声明后面用问号来标明此参数为可选参数
不能声明必选参数,声明在必选参数的后面
var myname: string = "zhai liang";
function test(a: string, b?: string, c: string='jojo') {console.log(a);console.log(b);console.log(c);
}
test('xxx');
Rest and Spread操作符:用来声明任意数量的方法参数
...声明
方法一
function func1(...args) {args.forEach(function (arg) {console.log(arg);})
}
func1(1, 2, 3);
func1(7, 8, 9, 10, 11);
方法二
function func1(a, b, c) {console.log(a);console.log(b);console.log(c);
}
var args = [1, 2];
func1(...args);
var args = [7, 8, 9, 10, 11];
func1(...args);
generator函数:控制函数的执行过程,手工暂停和恢复代码执行
https://www.b abeljs.cn/repl/
Generator的声明方式类似一般的函数声明,只是多了个*号,并且一般可以在函数内看到yield关键字
ES6笔记(5)-- Generator生成器函数 - -渔人码头- - 博客园
destructuring析构表达式:通过表达式将对象或数组拆解成任意数量的变量
1
function getStock() {return {code: "IBM",price: 100}
}var { code, price } = getStock();console.log(code);
console.log(price);
2
function getStock() {return {code: "IBM",price: {price1: 100,price2: 200}}
}var { code: codex, price: { price2 } } = getStock();console.log(codex);
console.log(price2);
3
function getStock() {return {code: "IBM",price: {price1: 100,price2: 200},aaa: "xixi",bbb:"haha"}
}var { code: codex, price: { price2 } } = getStock();console.log(codex);
console.log(price2);
用析构表达式从数组里去取值
var array1 = [1, 2, 3, 4];
var [number1, number2] = array1;console.log(number1);
console.log(number2);
var array1 = [1, 2, 3, 4];
var [number1, , ,number2] = array1;console.log(number1);
console.log(number2);
var array1 = [1, 2, 3, 4];function doSomething([number1, number2, ...others]) {console.log(number1);console.log(number2);console.log(others);
}doSomething(array1);
表达式和循环
箭头表达式:用来声明匿名函数,消除传统匿名函数的this指针问题
forEach(),for in 和 for of
var myArray = [1, 2, 3, 4];
myArray.desc = "four number";myArray.forEach(value => console.log(value));
forEach不支持break;
var myArray = [1, 2, 3, 4, 5];
myArray.desc = "four number";for (var n in myArray) {console.log(myArray[n]);
}
var myArray = [1, 2, 3, 4, 5];
myArray.desc = "four number";for (var n of myArray) {if (n > 2) break;console.log(myArray[n]);
}
for (var n of "four number") {console.log(n);
}
面向对象
类(class)类是TypeScript的核心,使用TypeScript开发时,大部分代码都是写在类里面的。
类的定义,构造函数,类的继承
class Person{name;//属性eat() {//方法console.log("I'm eating");}
}
//new关键字
var p1 = new Person();
p1.name = "batman";
p1.eat();var p2 = new Person();
p2.name = "superman";
p2.eat();
class Person{//pprivate(私有的)关键字 protected(受保护的)关键字在类的里面可以访问 private name;//属性private eat() {//方法console.log("I'm eating");}
}
//new关键字
var p1 = new Person();
p1.name = "batman";//name是私有的
p1.eat();//eat私有var p2 = new Person();
p2.name = "superman";
p2.eat();
类的实例化
class Person{constructor() {console.log("haha");}name;eat() {console.log("I'm eating");}
}var p1 = new Person();
p1.name = "batman";
p1.eat();var p2 = new Person();
p2.name = "superman";
p2.eat();
class Person{constructor(public name:string) {this.name = name;}eat() {console.log(this.name);}
}var p1 = new Person("batman");
p1.eat();var p2 = new Person("superman");
p2.eat();
泛型:参数化的类型,一般用来限制集合的内容
class Person{constructor(public name:string) {console.log("haha");}eat() {console.log(this.name);}
}class Employee extends Person{constructor(name: string, code: string) {super(name);console.log("xixi");this.code = code;}code: string;work() {super.eat();this.doWork();}private doWork() {console.log("I'm working");}
}
//Person是数组Array的泛型
var workers: Array<Person> = [];
workers[0] = new Person("zhangsan");
//报错是因为Person是字符串类型不是数字类型
workers[1] = new Person("list", "2");
workers[2] = 2;var el = new Employee("name", "1");
el.work();
接口:用来建立某种代码约定,使得其它开发者在调用某个方法或创建薪的类时必须遵循接口所定义的代码约定
interface Animal{eat();
}
class Sheep implements Animal{eat() {console.log("I eat grass");}
}class Tiger implements Animal{eat() {console.log("I eat grass");}
}
模块:模块可以帮助开发者将代码分割为可重用的单元。开发者可以自己决定将模块中的哪些资源(类,方法,变量)暴露出去供外部使用,哪些资源只在模块内使用。
注解:注解为程序的元素(类,方法,变量)加上更直观更明了的说明,这些说明信息与程序的业务逻辑无关,而是供指定的工具或框架使用的。
类型定义文件(*.d.ts)
类型定义文件用来帮助开发者在Typescript中使用已有的JavaScript的工具包如:jQuery
jQuery定义文件 DefinitelyTyped/types/waypoints at master · DefinitelyTyped/DefinitelyTyped · GitHub
安装类型定义文件
https://github.com/typings/typings
TypeScript 学习笔记相关推荐
- TypeScript学习笔记3:运算符
TS 和 JS 相对比的优势 TypeScript的安装步骤.运行问题及代码的简单运行 TypeScript学习笔记1:变量赋值及书写方式 TypeScript学习笔记2:数据类型 文章目录 运算符 ...
- TypeScript学习笔记2:数据类型
TS 和 JS 相对比的优势 TypeScript的安装步骤.运行问题及代码的简单运行 TypeScript学习笔记1:变量赋值及书写方式 TypeScript学习笔记2:数据类型 文章目录 数据类型 ...
- TypeScript学习笔记1:变量赋值及书写方式
TS 和 JS 相对比的优势 TypeScript的安装步骤.运行问题及代码的简单运行 TypeScript学习笔记1:变量赋值及书写方式 TypeScript学习笔记2:数据类型 文章目录 变量赋值 ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记一:介绍、安装、编译
前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...
- typeScript学习笔记day01——小肉包
typeScript学习笔记 class1: 一.javaScript(js)的优缺点 javaScript是在微软公司和网景公司之间爆发的浏览器大战期间,由网景公司的Brendan Eich(布兰登 ...
- typeScript学习笔记day02——小肉包
typeScript学习笔记 class3 : 2021.02.24 一.TS编译选项 自动编译文件 编译文件时,使用-w指令后,YS编译器会自动监视文件变化,并在文件发生变化时对文件进行重新编译. ...
- typescript学习笔记1 —— 接口(interface)
typescript是微软出品的,javascript的超集.让javascript的写法很类似java,核心功能是让JavaScript这个弱类型的语言,增加类型检查,更适合编写企业级应用.之前的a ...
- typescript-----javascript的超集,typescript学习笔记持续更新中......
Typescript,冲! Typescript 不是一门全新的语言,Typescript是 JavaScript 的超集,它对 JavaScript进行了一些规范和补充.使代码更加严谨. 一个特别好 ...
- TypeScript学习笔记之 接口(Interface)
在java中,接口是用来定义一些规范,使用这些接口,就必须实现接口中的方法,而且接口中的属性必须是常量. javascript中是没有接口的概念的.所以TypeScript在编译成 JavaScrip ...
最新文章
- 实验五:任意输入10个int类型数据,排序输出,再找出素数
- 数字下变频和数字上变频
- 十个经典Java 集合面试题!
- html 加入li的作用,HTML的li有什么作用?
- springboot接收文件上传_SpringBoot第十七篇:上传文件
- 【scala初学】scala 控制 for while match if
- python连接mysql的一些基础知识+安装Navicat可视化数据库+flask_sqlalchemy写数据库
- 地图点儿莱唔点儿康的新功能 – 路况 和 短信
- 最新版MySQL在MacOS上的实践!
- 卷积神经网络算法python实现_自动色彩均衡(ACE)快速算法python实现
- 案例:控制文件序列号满故障处理和分析
- 凸包练习: POJ 2187(JAVA)
- Java虚拟机学习 - 体系结构 内存模型
- 使用struct与typedef定义结构体
- mysql的驱动_注册驱动MySQL的驱动程序
- 5G要来了,实际测试告诉你它的速度到底有多快!
- 使用cublas实现矩阵乘法
- 情感分析的分类,情感分析模型有哪些,情感分析的应用场景,情感分析的发展趋势
- 休斯敦大学计算机学院网址,李大学(学院)
- centos搭建samba服务器