当let声明一个变量的时候它使用的词法作用域或者是块作用域。块作用域指的就是他们包含的块以外的不能访问。

const声明:是let声明有相同的作用域规则,但是它被赋值后不能再被改变。类似于java的final

TypeScript 可以用 `` 来声明多行字符串,编译之后js文件换行的地方会加上\n

在` ` 里面可以用 ${xxx变量/方法} 这种格式加入变量或方法,称为字符串模板.感觉就像普通语言中的print函数一样

TypeScript引入了类型的概念,如 var name: string = "haha"; 变量名name后面跟冒号后面加上变量类型,如果再把name赋一个
数字类型的值,那么会报错,但是生成的js文件依然没有问题.声明为any可以存放任何类型

方法之后也可以跟返回值的类型, 如 function test() : string { return:";" } 那么只能返回string类型.

可以自定义数据类型,用 class关键字 ,如 class Person {name: string; age: number;} 就声明了一个一个Person类,里面有
string类型的name 和 number类型的age. 创建一个Person 对象用 var zhangsan:Person = new Person();
zhangsan.name = "";用这种方式赋值.

函数可选参数如:function test(a = "haha": string, b?: string) : void {} b后面加?表示可选参数,a是有默认值的参数,
可选参数必须声明在必选参数后面.

可以用 function test(...args) 这种方法给函数传不定长参数,args是一个数组.

ES6 支持 yield 需要在函数声明之后加上* , 如 function* test(){ }, 里面在返回处用 yield关键字,如果 yield后面有语句
如 yield Math.random(); 那么可以创建一个对象,用 对象.next().value() 接收这个值.

析构表达式,如,一个函数返回一个对象 {name:"haha", age:18} ,那么可以这样接收 var {name, age} = 函数();
如果接收名和传过来的名字不一样,可以加上 var {name: namex, age} = 函数(); 这样表示接收name参数的值存储在namex变量里面, 还可以嵌套表达式, 如果传回来的对象,其中一个属性又是一个对象,那么可以这样:var {name:{firstname:haha}} = 函数()
表示把返回的对象的name对象的firstname属性取出来存到haha变量里面.

析构表达式如果想要接收数组,那么可以这样: var [num1, num2, ...args] = array1; 表示 num1变量接收 array1[0] 的值,
num2 是 array1[1] ,剩下的全部放到args数组里面去. 析构表达式也可以作为方法的参数.

箭头表达式,类似于lambda表达式,是用js匿名函数实现的, 如 var sum = (num1=123, num2=321) => num1 + num2;执行sum(),就会
返回语句的执行结果.一般用他来解决js中this关键字的问题.看起来像把 function(){ } 替换为 () =>{ } ,注意如果匿名函数多行的话后面的语句要加在花括号中.

for (var n of array1) { } 新的循环方式:for of 会忽略掉数组的属性,并且循环取到的n是数组里面的值.还可以循环字符串.

类的访问控制符有三个 public private protected,默认是public

类的构造方法: constructor(public name:string){ } 声明构造方法,同时声明一个name属性,在实例化的时候可以直接赋值.注意,
如果这样的话,必须要在属性上加访问控制符.子类 extends继承父类时,必须要在构造函数里面调用父类构造函数,super();
获取类的属性且不确定变量名的时候用 类名[变量名] 这种方法 不能用 类名.属性名

TypeScript也有泛型的概念,如: var array1: Array<Person> = []; 这个数组里面只能存放Person类和它的子类.

接口的定义: interface Animal { eat(); } 可以作为方法的参数类型,也可以用类 implements 实现这个接口.

export 对外开放的东西,加了export修饰符,那么别的文件就可以 import { xxx } from "./xxxx" 导入.

类型定义文件以 .d.ts结尾,如想用jquery库,可以下载一个jquery的类型定义文件,就可以在ts文件中使用jquery.

TypeScript : 语法及特性的更多相关文章

  1. typescript语法

    先来讲一讲TypeScript出现的背景 前端javascript的编程思想与后端java面向对象的编程思想有很大的不同,微软公司借鉴了coffeescript语言,继承了很多C#和java的编程思想 ...

  2. Python3学习之路~3.1 函数基本语法及特性、返回值、参数、局部与全局变量

    1 函数基本语法及特性 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 语法定义: d ...

  3. Java7语法新特性

    Java7语法新特性: 1. switch中增加对String类型的支持. public String generate(String name, String gender) { String ti ...

  4. Python面向对象学习2(面向对象的语法和特性,待更新)

    上一个内容我们介绍了面向对象和面向对象场景现在我们来学习下语法和特性 1,面向对象基本语法: # -*- coding:utf-8 -*- # Author: Colin Yao class Dog( ...

  5. Atitit.  c# 语法新特性 c#2.0 3.0 4.0 4.5 5.0 6.0   attilax总结

    Atitit.  c# 语法新特性 c#2.0 3.0 4.0 4.5 5.0 6.0   attilax总结 1.1. C# 1.0-纯粹的面向对象 1.2. C# 2.0-泛型编程新概念 1.3. ...

  6. day03 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  7. 3 TypeScript 语法特性

    一.类型注解(Type annotations) TypeScript 通过类型注解提供静态类型以在编译时启动类型检查,简单来说,就是指定数据类型,它会在代码运行的时候,对传入的数据进行数据类型匹配检 ...

  8. TypeScript语法学习--变量的声明

    JavaScript里相对较新的变量声明方式是let和const.let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题. const是对let的一个增强,它能阻止 ...

  9. TypeScript语法基础

    什么是TypeScript? TypeScript是微软开发的一门编程语言,它是JavaScript的超集,即它基于JavaScript,拓展了JavaScript的语法,遵循ECMAScript规范 ...

随机推荐

  1. spark出现task不能序列化错误的解决方法

    应用场景:使用JavaHiveContext执行SQL之后,希望能得到其字段名及相应的值,但却出现"Caused by: java.io.NotSerializableException: ...

  2. Mysql存储Emoji表情[为何utf8不能存储以及如何使Mysql能够存储Emoji表情]

    https://segmentfault.com/a/1190000008533577

  3. html 页面清浏览器缓存

    <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv=" ...

  4. SQL Server ->> Database Promgramming Object Security Control(数据库编程对象安全控制)

    对于SQL Server内编程对象的安全控制是今天我在思考的问题.在MSDN上找到了几篇有用的文章. 首先微软推荐了三种做法: 1)第一种做法是在SQL Server中对一个应用程序对应创建应用程序角 ...

  5. using log4net on my project within a self-hosted WCF application z

    Add reference to log4net.dll to our console service host project (our application entry point) Add t ...

  6. 架设Git服务器

    架设Git服务器项目 Git Candy:http://github.com/Aimeast/GitCandy/ AE大神的作品, Git Candy© 是一个基于ASP.NET MVC的Git分布式 ...

  7. 中间人攻击-ARP毒化

    感谢Heee投递 中间人攻击虽然古老,但仍处于受到黑客攻击的危险中,可能会严重导致危害服务器和用户.仍然有很多变种的中间人攻击是有效的,它们能够很容易的欺骗外行并且入侵他们.正如字面意思一样,中间人攻 ...

  8. 在前端页面展示Markdown文件

    常我们都会在GitHub上浏览很多的readme文件,这些都是Markdown语法写成的Markdown文件,HTML中并没有用于展示Markdown文件的元素,那么为什么可以在前端展示呢? 有别于G ...

  9. Thread Costs

    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/CreatingTh ...

  10. UIView的多重属性

    1)几何属性: 2)位图属性: