TypeScript : 语法及特性
当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 : 语法及特性的更多相关文章
- typescript语法
先来讲一讲TypeScript出现的背景 前端javascript的编程思想与后端java面向对象的编程思想有很大的不同,微软公司借鉴了coffeescript语言,继承了很多C#和java的编程思想 ...
- Python3学习之路~3.1 函数基本语法及特性、返回值、参数、局部与全局变量
1 函数基本语法及特性 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 语法定义: d ...
- Java7语法新特性
Java7语法新特性: 1. switch中增加对String类型的支持. public String generate(String name, String gender) { String ti ...
- Python面向对象学习2(面向对象的语法和特性,待更新)
上一个内容我们介绍了面向对象和面向对象场景现在我们来学习下语法和特性 1,面向对象基本语法: # -*- coding:utf-8 -*- # Author: Colin Yao class Dog( ...
- 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. ...
- day03 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...
- 3 TypeScript 语法特性
一.类型注解(Type annotations) TypeScript 通过类型注解提供静态类型以在编译时启动类型检查,简单来说,就是指定数据类型,它会在代码运行的时候,对传入的数据进行数据类型匹配检 ...
- TypeScript语法学习--变量的声明
JavaScript里相对较新的变量声明方式是let和const.let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题. const是对let的一个增强,它能阻止 ...
- TypeScript语法基础
什么是TypeScript? TypeScript是微软开发的一门编程语言,它是JavaScript的超集,即它基于JavaScript,拓展了JavaScript的语法,遵循ECMAScript规范 ...
随机推荐
- idea 出现 java.noSuchMechodFound
公司 用了多个项目来相互之间形成依赖.每次修改或者添加新功能,会升级版本.用的是maven,这几天 一直 出现一个问题就是:本地 升级版本完后 使用 git命令 mvn -deploy -e 打包后, ...
- 【PHP系列】框架的抉择
缘起 在PHP开发中,选择合适的框架有助于加快软件开发,节约宝贵的项目时间,让开发者专注于功能的实现上.框架的问题是需要很多的投入,选择框架时,我们更看重这个框架的未来,存在多年的大型框架必须要有好的 ...
- ORACLE 收集统计信息
1. 理解什么是统计信息优化器统计信息就是一个更加详细描述数据库和数据库对象的集合,这些统计信息被用于查询优化器,让其为每条SQL语句选择最佳的执行计划.优化器统计信息包括: · ...
- 学习的矩阵微积分The matrix calculus you need for deep learning
学习的矩阵微积分The matrix calculus you need for deep learning https://explained.ai/matrix-calculus/index.ht ...
- sso(single sign on)
sso系统使用 https://www.cnblogs.com/shuai-server/p/8987070.html 一:什么是sso(single sign on) ? sso(单点登录系统)简单 ...
- mongodb分片集群(无副本集)搭建
数据分片节点#192.168.114.26#mongo.cnfport=2001dbpath=/data/mongodb/datalogpath=/data/mongodb/log/mongodb.l ...
- 元素设置float属性后,其后面的元素的位置问题
分两种情况: .content{ width:350px; height:150px; color:#fff; } .content1,.content2{ background-color: #00 ...
- IntelliJ IDEA自动补全变量名称和属性名称的快捷键
自动补全变量名称 : Ctrl + Alt + v 自动补全属性名称 : Ctrl + Alt + f
- Cocos2dx打包apk时变更NDK引发问题及解决
现在官方的Cocos Studio已经支持打包apk文件,写该随笔的时候还没试过官方的打包功能,所以就按自己的学习顺序先把打包的心得写下. 问题及最终解决方案: 其中耗时最长的问题就是ndk-r10改 ...
- 20145238-荆玉茗《网络对抗技术》-Web基础
20145238荆玉茗-<网络攻防>-Wbe基础 实践过程记录 实践过程记录 一.Apache 1.环境配置 使用apachectl start开启Apach,使用netstat -apt ...