当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. Django后台注册

  2. 如何修改settings.xml的镜像

    今天在下载一个maven依赖包时候,下载后一直显示的是upload的jar包,然后检查了下自己的settings.xml配置,发现依赖的还是以前的内网nexus得配置.所以下载不下来,现在改为ali的 ...

  3. [PE格式分析] 4.IMAGE_FILE_HEADER

    源代码如下: typedef struct _IMAGE_FILE_HEADER { +04h WORD Machine; // 运行平台 +06h WORD NumberOfSections; // ...

  4. Subversion FAQ(常见问题解答)

    转自:http://subversion.apache.org/faq.zh.html 常见问题: 为什么会有这样一个项目? 为了接管CVS的用户基础.确切的说,我们写了一个新的版本控制系统,它和CV ...

  5. SQL Server ->> 自动创建表并从文件加载数据

    这个存储过程自动创建表并从文件加载数据. 有一点需要说明的是Excel 12.0驱动是兼容了Excel 97-2003和Excel 2007两者格式的Excel文件. CREATE PROCEDURE ...

  6. QT的动图加载

    http://blog.csdn.net/u011619422/article/details/47342403

  7. Eclipse版本推荐(tomcat运行项目:web、maven)

    1.区别 Eclipse根据特性和jdk版本,从Eclipse官网可看到,分为:Neon/Oxygen/Mars/Luna/Kepler/Juno/Indigo/Helios...等等. Eclips ...

  8. Entity Framework: 主从表的增删改

    1.根据主表添加从表数据 var dest = (from d in context.Destinations where d.Name == "Bali" select d).S ...

  9. 远程登录-出现身份验证错误[可能是由于CredSSP加密Oracle修正]

    问题描述 远程桌面登录时,出现身份验证错误,要求的函数不正确,这可能是由于CredSSP加密Oracle修正. 原因,系统更新导致 CVE-2018-0886 的 CredSSP 更新 解决方法1 运 ...

  10. 你真的了解现在的PHP吗?

    前段时间,公司的项目从PHP5.3升级到PHP7,现在项目里开始使用PHP7的一些新语法和特性.反观PHP的5.4.5.5.5.6版本,有点认知缺失的感觉.所以,决定看<Modern PHP&g ...