欢迎加入前端交流群交流知识&&获取视频资料:749539640

1.typescript介绍

微软开发的一门编程语言,javascript的一个超集,遵循最新的ES6脚本语言规范(2015年发布),它扩展了Javascript的语法,任何已经写好的javascript程序都可以不加改动的在typescript环境下运行,它只是向javascript添加了一些新的遵循ES6的语法,以及基于类的面相对象编程的特性。angular2框架2016年9月底发布,是由typescript语言来编写的;typescript是由谷歌和微软在背后支持的,有可能成为前端脚本语言发展的主流方向。

2.typescript优势

  • 支持ES6语法
  • 强大的IDE支持(允许为变量指定类型、语法提示【很强】、重构【很方便修改文件或方法的名字,自动连带修改】)
  • angular2开发语言

3.typescript开发环境的搭建

目前的主流浏览器还不是完全支持ES6语法规范,用ES6写的程序并不能直接放到浏览器上,需要把typescript代码转换为javascript代码才能在浏览器里运行;

安装typescript compiler,这个是typescript的编译器

3.1在线complier:http://www.typescriptlang.org/play/index.html

3.2本地complier:

安装工具npm(基于node)   cmd命令安装

 npm install typescript  -g   //全局安装
tsc -v //

工具的使用:

新建一个hello.ts文件(typescript的后缀名是ts)(先写一个简单的类)

cmd进入文件目录执行命令:tsc hello.ts

之后会生成hello.js文件,这样就将ypescript代码编译为javascript代码

当然实际的开发当中不能一直这么tsc,太不方便了,我用的IDE是webstorm编辑器;

直接在编辑器里新建项目typescript flie;(hello.ts)

会有这么个提示点击configure

这样就配置好了webstorm的自动编译,它会自动生成对应的js文件,还是很方便的!(2017-11-22  10:09:26)

4.字符串新特性

4.1多行字符串;(js里字符串的换行是需要+号来拼接的,开发效率很慢,这里直接使用· ·就可以了【数字键1和esc和tab围起来的那个键!】)

 //多行字符串
var string = `aaa
bbb
ccc`

4.2字符串模板:(在多行字符串里用表达式插入变量或方法)

 //字符串模板
var myname = "wangzhichao"
var getname = () => {
return 'wangzhichao'
}
console.log(`hello ${myname}`)
console.log(`hello ${getname()}`)

4.3自动拆分字符串:(用字符串模板调用一个方法的时候,字符串模板里表达式的值会自动赋给方法中的参数)

 //自动拆分字符串
var test=(temlpate,name,age)=>{
console.log(temlpate)
console.log(name)
console.log(age)
}
var myname = "wangzhichao"
var getAge = ()=>{
return 18
}
test`hello my name is ${myname},i am ${getAge()}`//根据表达式的数量进行切割

5.参数新特性

5.1指定参数类型

 //1.指定参数类型
var age:number = 18;
var name1:string = "wangzhichao"
var woman:boolean = true;
var aa:any = "";//任何类型
function fs():void{
//指定一个函数返回空
}
function fs2():string{
return "";
}
class person{
name:string;
age:number;
}
var zhangsan:person = new person;
zhangsan.age = 18;
zhangsan.name = "zhansan";

5.2参数默认值(带默认值的参数要放在最后面)

 //2.参数默认值
//带默认值的参数要放在最后面
var test1 = (a:string,b:string,c:string="zhangsan") =>{
console.log(a)
console.log(b)
console.log(c)
}
test1("wangzhichao","libai")

5.3可选参数  ?(可选参数放在必选参数后面)

 //3.可选参数  ?可选参数放在必选参数后面
var test2 = (a:string,b?:string,c:string="zhangsan") =>{
console.log(a)
console.log(b)
console.log(c)
}
test2("wangzhichao222")

6.函数新特性

6.1rest and spread操作符(三个点...):用来声明任意数量的方法参数

 //1.rest and spread操作符:用来声明任意数量的方法参数
function test(...a){
a.forEach(function (val,index) {
console.log(val,index); })
}
test(1,2,3,4,5)

6.2generator函数:

控制函数的执行过程,手工暂停和恢复代码的执行(function后有*     、next()方法去执行)

 //2。generator函数:
//控制函数的执行过程,手工暂停和恢复代码的执行
function* doomse(){
console.log("start");
yield ;//断点
console.log("finish") }
var fun1 = doomse();
fun1.next();
fun1.next();

6.3析构表达式

 //6.3.1  对象析构表达式
function list(){
return{
name:"apple",
price:{
price1:100,
price2:200
},
beizhu:"xixix"
}
}
var a = list();
var name1 = a.name;
var price1 = a.price.price2;
console.log(name1,price1)
var {name,price:{price1}} = list()
console.log(name,price1) //6.3.2 数组析构表达式
var arr = [1,2,3,4,];
var [ , ,n1,n2] = arr;
var [n1,n2,...ac] = arr;
console.log(ac,n1,n2)//ac为后面的全部数组

7.表达式与循环

7.1箭头表达式

 //1.箭头表达式
//消除传统匿名函数this指向问题 function get1(name:string){
this.name = name;
setInterval(() => {
console.log(this.name)
},1000)
}

7.2for each、for in、for of

for each:循环数组的所有元素,会忽略掉数组的属性(info),不支持break();err方法可以,要求匿名函数返回布尔值;

for in:     循环数组的所有元素,包括数组的属性(info)

for of:     循环数组的所有元素,会忽略掉数组的属性(info),支持break();字符串也可以使用for of;

 //2.forEach、for in和for of
var arr = [1,2,3,4];
arr.info = "four number"
arr.forEach((val,index) => {console.log(val,index)}); for (var n in arr){
console.log(n,arr[n])
}
for(var i of arr){
if(i>2){break}
console.log(i)
}
for(var j of "wangzhi chao"){ console.log(j)
}

8.面向对象新特性

8.1类

 //8.1.1.类
class person {
//private //私有的
//protected //子类和内部可访问
// public //默认
name: "wang"; eat() {
console.log(this.name + " is eating s1i")
}
}
var p1 = new person();
//p1.name = "li";
//p1.eat();
//8.1.2.类 constructor
class woman {
constructor(public name: string) { } eat() {
console.log(this.name)
}
}
var p2 = new woman("wangzhichao")
//p2.eat()
//8.1.3.extends 继承
class people extends woman {
constructor(name: string, code: number) {
super(name);
this.code = code;
} work() {
this.do();
console.log("i am working")
} private do() {
super.eat()
}
}
var p3 = new people("wang11122", 12);
p3.work()

8.2泛型

参数化的类型,一般用来限制 集合的内容

 //2.泛型
//参数化的类型,一般用来限制 集合的内容
class woman {
constructor(public name: string) { } eat() {
console.log(this.name)
}
}
var workers: Array<woman> = [];
workersp[0] = new woman("li rr");

8.3接口 interface

用来建立某种代码约定,使得其开发者在调用某个方法或创建新的类时必须遵循接口所定义的的代码约定

 //3.接口  interface
//用来建立某种代码约定,使得其开发者在调用某个方法或创建新的类时必须遵循接口所定义的的代码约定
interface key {
name: string;
age: number;
}
class cat {
constructor(public size: key) {
}
}
var cat1 = new cat({name: "mao", age: 12});
//implements
interface animals {
eat()
}
class dog implements animals {
eat() {
console.log("woshigexiao")
}
}

8.4.模块
模块可以帮助开发者将代码分割为可重用的单元,开发者可以自己决定将模块中的哪些资源(类、方法、变量)暴露出去供外部使用,哪些资源只能在内部适用

8.5.注解
注解为程序的元素(类、方法、变量)加上更加直观明了的说明,这些说明信息的与程序的业务逻辑无关,而是供指定的工具或框架使用的

暴露使用export;

引入使用import
新建a.ts和b.ts文件(a.ts的类、方法、变量暴露出去。b.js里可以引入使用)

8.6.类型定义文件(*.d.ts)
使用已有的jquery文件等等

typescript入门基础的更多相关文章

  1. 学习笔记:TypeScript入门——基础类型

    前言: TypeScript官网断断续续看过几遍,不知道项目中如何使用,有机会还是要实践一下.现在再把文档上不懂的知识点理一遍. 基础类型 1.什么是元组Tuple? 元组类型允许表示一个已知元素数量 ...

  2. typeScript入门基础 (1)

    1.ts是js的超集,可使用es5,es6的代码 2. ts的安装与编译: a.  首先需要Node.js环境 .  相信都有,略过. 不会的请百度,或者留言. b.  npm  install  - ...

  3. typeScript入门基础 (2): 数据 类型, 函数定义

    1.   number , boolean, string, null, undefind  枚举, any, array数组, 元祖, 2...枚举,需要的注意点,  下一个图,就是为什么yello ...

  4. TypeScript入门一:配置TS工作环境

    配置手动编译TS文件工作环境 配置webpack自动化打包编译工作环境(后面补充) 一.TypeScript入门学习引言 进入主题之前,首先说明这个系列的博客是我刚刚接触TypeScript的学习笔记 ...

  5. mybatis入门基础(二)----原始dao的开发和mapper代理开发

    承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...

  6. 01shell入门基础

    01shell入门基础 为什么学习和使用shell编程 shell是一种脚本语言,脚本语言是相对于编译语言而言的.脚本语言不需要编译,由解释器读取程序并且执行其中的语句,而编译语言需要编译成可执行代码 ...

  7. Markdown入门基础

    // Markdown入门基础 最近准备开始强迫自己写博文,以治疗严重的拖延症,再不治疗就“病入骨髓,司命之所属,无奈何”了啊.正所谓“工欲善其事,必先利其器”,于是乎在写博文前,博主特地研究了下博文 ...

  8. JavaScript入门基础

    JavaScript基本语法 1.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=).算术运 ...

  9. C++ STL编程轻松入门基础

    C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...

随机推荐

  1. 手动打包MVC项目成Web Deploy包,发布至服务器

    ①确保服务器上安装了Web Deploy,可以使用微软Web Paltform Installer安装.https://www.microsoft.com/web/downloads/platform ...

  2. 在sqlserver2005/2008中备份数据库,收缩日志文件

    ---1.先备份数据库(含日志文件) use myhis go backup database myhis to disk='d:\myhis_rzbak' go ---2.设为简单恢复模式 use ...

  3. topN 算法 以及 逆算法(随笔)

    topN 算法 以及 逆算法(随笔) 注解:所谓的 topN 算法指的是 在 海量的数据中进行排序从而活动 前 N 的数据. 这就是所谓的 topN 算法.当然你可以说我就 sort 一下 排序完了直 ...

  4. PHP开发要点与技巧总结(一)

    Opcache:Opcache 来源于Zend Optimizer+改名,主要作用是通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是省去了每次加载 ...

  5. PHP+nginx 线上服务研究(一)

    一. 基本介绍 OpenResty® 是一个基于Nginx和Lua的高性能Web平台,其内部集成了大量精良的Lua库.第三方模块以及大多数的依赖项.用于方便搭建能够处理超高并发.扩展性极高的动态Web ...

  6. 微信小程序倒计时

    今天做程序要做个限时抢购的功能如图: 先上代码: 源码 index.wxml    可根据自己实际需求改改 <view class="div-content-warp"> ...

  7. UVa12325, Zombie's Treasure Chest

    反正书上讲的把我搞得晕头转向的,本来就困,越敲越晕...... 转网上一个大神写的吧,他分析的很好(个人感觉比书上的清楚多了) 转:http://blog.csdn.net/u010536683/ar ...

  8. UVa10129,Play On Words

    给出n个单词,如果一个单词的尾和另一个单词的头字符相等,那么可以相连,问这n个单词是否可以排成一列.欧拉路应用,构图:一个单词的头尾字母分别作为顶点,每输入一个word,该word的头指向word的尾 ...

  9. JSTL标签库的基本教程之核心标签库(一)

    JSTL介绍 Java Server Pages Standard Tag Libray(JSTL):JSP标准标签库,它封装了JSP应用的通用核心功能.JSTL支持通用的.结构化的任务,比如迭代,条 ...

  10. java zip解压

    /** * 解压文件到指定目录 * @param zipFile * @param descDir * @author sqdll */@SuppressWarnings("rawtypes ...