TS2
//还要注意的是,在构造函数的参数上使用public等同于创建了同名的成员变量。
class Student {
fullName: string;
constructor(public firstName, public middleInitial, public lastName) { //4个成员变量
this.fullName = firstName + " " + middleInitial + " " + lastName;
}
}
interface p{
firstName:string;
middleName:string;
lastName:string;
fullName:string;
}
function a(s:p){
return "aa" + s.firstName + s.middleName + s.lastName + s.fullName;
}
var s = new Student('fff','mmm','lll');
console.log(a(s)); -------------------------------------------------------------------------------------------
元组类型:
var x: [string, number] = ['hello', 10];
var x = ["sss",222]; var x : string|HTMLElement; class Dog {woof(){}}
class Cat {meow(){}}
var pet: Dog|Cat;
-------------------------------------------------------
联合类型;
interface p{
name:string;
age:string | string[] | ( ()=>string );
}
var p1 : p = {name:"sss",age:["sdss","dee"]};
console.log(p1.name + p1.age);
--------------------------------------------------------
联合类型|泛型
function cc<T>(x:T,y:T):T{ //申明时不指定参数类型
return Math.random() > 0.5 ? x : y;
}
console.log( cc<string>('1','3') ); //调用的时候确定参数类型
console.log( cc<string|numnber>(1,'3') ); function ss<T,M>(x:T,y:M):T|M {
return Math.random() > 0.5 ? x : y;
}
console.log( ss<string,number>("www",22) );
---------------------------------------------------------
模版字符串:
var name = "TypeScript";
var greeting = `Hello, ${name}! Your name has ${name.length} characters`;
当编译目标为ES6之前的版本时,这个字符串被分解为:
var name = "TypeScript!";
var greeting = "Hello, " + name + "! Your name has " + name.length + " characters";
---------------------------------------------------------
类型别名:
type PrimitiveArray = Array<string|number|boolean>;
type MyNumber = number;
type NgScope = ng.IScope;
type Callback = () => void;
----------------------------------------------------------
const enum(完全嵌入的枚举)
const enum Suit { Clubs, Diamonds, Hearts, Spades }
var d = Suit.Diamonds; Compiles to exactly: var d = 1;
----------------------------------------------------------
解构声明会引入一个或多个命名变量, 并且初始化它们的值为对象的属性或者数组的元素对应的值.
比如说, 下面的例子声明了变量 x, y 和 z, 并且分别将它们的值初始化为 getSomeObject().x, getSomeObject().x 和 getSomeObject().z;
var { x, y, z } = getSomeObject(); 交换2个值
var x = 1;
var y = 2;
[x, y] = [y, x];
--------------------------------------------------------
never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never。
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}
----------------------------------------------------------
类型断言好比其它语言里的类型转换,
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
另一个为as语法:
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
----------------------------------------------------------------
函数参数也使用函数作用域。
解构:
数组的解构赋值:
let input = [1, 2];
let [first, second] = input;
console.log(first); // outputs 1
console.log(second); // outputs 2 // swap variables
[first, second] = [second, first];
---------------------------------------
function f([x,y]:[number,number]){
console.log(x);
console.log(y);
}
let i:[number,number] = [3,4];
f(i);
-----------------------------------------------------------------
TS2的更多相关文章
- typescript-学习使用ts-2
解构赋值 数组解构 let input = [1, 2]; let [first, second] = input; console.log(first); // outputs 1 console. ...
- WebApi基于Token和签名的验证
最近一段时间在学习WebApi,涉及到验证部分的一些知识觉得自己并不是太懂,所以来博客园看了几篇博文,发现一篇讲的特别好的,读了几遍茅塞顿开(都闪开,我要装逼了),刚开始读有些地方不理解,所以想了很久 ...
- 【C#公共帮助类】 ToolsHelper帮助类
这个帮助类,目前我们只用到了两个,我就先更新这两个,后面有用到的,我会继续更新这个Helper帮助类 在Tools.cs中 有很多方法 跟Utils里是重复的,而且Utils里的方法更加新一点,大家可 ...
- java设计模式之单例模式(几种写法及比较)
概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建 ...
- 我的MYSQL学习心得(四) 数据类型
我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...
- WebApi安全性 使用TOKEN+签名验证
首先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候,会面临着许多的安全性问题, ...
- LinqToXml (一) Create Xml file By Dom /Linq
目前,在xml 应用编程领域比较流行的开发模型是W3C 提供的DOM(文档对象模型),在.net Framework 通过命名空间 System.Xml 对该技术提供了支持.随着Linq to XMl ...
- 从配置读取一段时间(TimeSpan)
C#的TimeSpan表示一段时间,DateTime表示一个时间点.TimeSpan可正可负,可与DateTime相加减,很方便,我喜欢. 代码中我们经常要表示一段时间,用一个统一的单位(时 或者 分 ...
- C#计算一段程序运行时间的三种方法
第一种方法利用System.DateTime.Now: static void SubTest() { DateTime beforDT = System.DateTime.Now; //耗时巨大的代 ...
随机推荐
- 20. Valid Parentheses[E]有效的括号
题目 Given a string containing just the characters '(',')','[',']','{' and '}',determine if the input ...
- python简易版学生管理系统
#coding=utf- def showInfo(): print("**************") print(" 学生管理系统") print(&quo ...
- Ssh safe
新建用户,设置密码 useradd eason passwd eason 不允许root直接登陆 修改配置文件 vi /etc/ssh/sshd_config 禁止root登录 查找“#PermitR ...
- Linux目录结构(二)
Linux文件系统结的结构是树形结构,其入口从/开始,了解Linux文件系统的结构,对于我们需要掌握的基础知识点之一. 2.文件系统的组织结构简说: 当您使用Linux的时候,如果您通过ls -la ...
- python3 常用模块详解
这里是python3的一些常用模块的用法详解,大家可以在这里找到它们. Python3 循环语句 python中模块sys与os的一些常用方法 Python3字符串 详解 Python3之时间模块详述 ...
- Java 解决一些ACM中大数问题
大数中算术运算结果的首选标度 运算 结果的首选标度 加 max(addend.scale(), augend.scale()) 减 max(minuend.scale(), subtrahend.sc ...
- sqoop从DB2迁移数据到HDFS
Sqoop import job failed to read data from DB2 database which has UTF8 encoding. Essentially, even th ...
- undefined reference to “boost” in Qt—Ubuntu
一:使用PCL时遇到的问题 原因:缺少boost的lib包含: 在Pro文件里面添加: LIBS += -lboost_system .....................等库文件包含 二:编译B ...
- Rx (Reactive Extensions)介绍
Reactive Extensions (Rx) 原来是由微软提出的一个综合了异步和基于事件驱动编程的库包,使用可观察序列和LINQ-style查询操作. 使用Rx, 开发者可以用Observable ...
- ArrayList集合如何存储基本数据类型
ArrayList对象不能存储基本类型,只能存储引用类型的数据.类似 <int> 不能写,但是存储基本数据类型对应的包装类型是可以的. 所以,想要存储基本类型数据, <> 中的 ...