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; //耗时巨大的代 ...
随机推荐
- springboot与mybatis集成
1)添加依赖 <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId& ...
- Prism学习(1)---前期准备
本文摘取自Gene's Blog的博客园文章,版权归Gene's Blog,仅供个人学习参考.转载请标明原作者Gene's Blog. 在学习Prism框架之前,我预先写了一个非常简单的计算器解决方案 ...
- ueditor和flexpaper的学习。。。。
博客园的博主编辑文本的时候在博客园编辑器上编辑的,最近见到并学习了一点百度一款ueditor的编辑器可供程序猿们二次开发.... 见链接http://fex.baidu.com/ueditor/#st ...
- 如何在Hexo中实现自适应响应式相册功能
用最清晰简洁的方法整合一个响应式相册 效果 技术选型 由于我选用的主题使用了fancyBox作为图片弹出展示的框架,查看后表示很不错,能满足需要 http://fancyapps.com/fancyb ...
- VS 在代码中括号总是跟着类型后面
if (OK.Text.Contains("运费")) {// 像这样子,这个大括号不是直接在IF下,而是跟在后面 工具-->选项-->文本编辑器-->C# -- ...
- 线性表结构的Java实现
一.线性表的抽象数据类型表述 线性表的结构简单,长度允许动态增长或搜索:可以对线性表中的任何数据元素进行访问和查找:允许进行数据的插入和删除操作:求线性表中的指定数据的前驱和后继:合并线性表以及拆分线 ...
- Self-hosting Sentry With Docker and Docker-compose
If a user encounters an error but you don't know about, did it happen at all? Sentry is one of the s ...
- (转)shiro权限框架详解05-shiro授权
http://blog.csdn.net/facekbook/article/details/54910606 本文介绍 授权流程 授权方式 授权测试 自定义授权realm 授权流程 开始构造Secu ...
- 【转】【Oracle 集群】11G RAC 知识图文详细教程之RAC在LINUX上使用NFS安装前准备(六)
原文地址:http://www.cnblogs.com/baiboy/p/orc6.html 阅读目录 目录 介绍 下载软件 操作系统安装 Oracle安装先决条件 创建共享磁盘 参考文献 相关文章 ...
- 转载:移动端自适应:flexible.js可伸缩布局使用
阿里团队开源的一个库.flexible.js,主要是实现在各种不同的移动端界面实现一稿搞定所有的设备兼容自适应问题. 实现方法: 通过JS来调整html的字体大小,而在页面中的制作稿则统一使用rem这 ...