TypeScript快速笔记(二)
1) TypeScript中的判断语句,可以使用非0值代表true。如:
function add1(a: number, b?:number): number{ // 注意b是可选参数
console.log("parm1(a): " + a, "parm2(b): " + b);
if(b){// 可选参数b,如果没有传参,值为undefined
return a + b;
}
else{
return a;
}
}
console.log(add1(10, 20)); // a: 10, b: 20
console.log(add1(25)); // a: 25, b: undefined
var num: number = 5;
if (num){
console.log('非0就是true') // 执行
}
num = 0;
if (num){
console.log('Test'); // 不会执行
}
if (null){
console.log('null') // 不会执行
}
if (undefined){
console.log('undefined') // 不会执行
}
非0判断
2)函数的定义有多种:无参函数,有参函数,可选函数,默认参数(与C/C++类似),剩余参数(类似于C/C++的可变参数),匿名函数,构造函数,递归函数,Lambda函数
普通参数的定义方式:
可选参数的定义方式:
实例:
console.log("普通参数测试:");
function add(a: number, b: number): number{
return a + b;
}
console.log(add(5, 7));
// 可选参数,当没有传进可选参数时,参数值为undefined
console.log("可选参数测试:");
function add1(a: number, b?:number): number{
console.log("parm1(a): " + a, "parm2(b): " + b);
if(b){// 可选参数b,如果没有传参,值为undefined
return a + b;
}
else{
// NaN代表一个非数字值
console.log(isNaN(a + b)); // true
console.log(isNaN(undefined)); // true
console.log(isNaN(null)); // false, null不是NaN值
return a;
}
}
console.log(add1(10, 20));
console.log(add1(25));
// 剩余参数
console.log("剩余参数测试:");
function sum(...num: number[]){
let sum: number = 0;
let resultString: string = '';
for(let i = 0; i < num.length; ++i){
sum += num[i];
resultString += num[i];
if (i + 1 < num.length)
resultString += ' + ';
else
resultString += ' = ';
}
resultString += sum;
console.log(resultString);
return sum;
}
sum(1,2,3,4,5);
//匿名函数
// 除了没有函数名外,其他的与标准函数一样。将匿名函数赋值给一个变量,这种表达式就成为函数表达式。
var res = function(a: number, b: number): number{
return a + b;
}
console.log(res(1, 5));
// 匿名函数自调用,在函数后面加个圆括号即可
(function(){
console.log("Hello World!");
})();
函数
结果:
普通参数测试:
12
可选参数测试:
parm1(a): 10 parm2(b): 20
30
parm1(a): 25 parm2(b): undefined
true
true
false
25
剩余参数测试:
1 + 2 + 3 + 4 + 5 = 15
6
Hello World!
函数实例输出结果
补充:关于重载函数,除了使用any,也可以使用联合类型,即:function disp(x:string|number,y?:string|number):void{}
3)TypeScript中的重载不是真正意义的重载,不能想C++/C#等方式直接重载,否则编译时会出现报错:TS2396: Duplicate function implementation.
TypeScript重载方式:
*如果参数类型不同,则参数类型应设置为 any。
*参数数量不同你可以将不同的参数设置为可选。
// 函数重载
function disp(s1:string):void; // 先声明重载函数但是不定义(函数签名)
function disp(n1:number,s1:string):void;
function disp(s1:string,n1:number):void; // 根据函数重载方式的实际情况,函数体的类型判断也可以做出优化
function disp(x:any,y?:any):void { // 通过any类型和可选参数实现重载
if(typeof(x) == "string" && typeof(y) == "undefined"){
console.log('(string): ' + x);
}
else if(typeof(x) == 'number' && typeof(y) == 'string'){
console.log('(number, string):' + x + ',' + y);
}
else if(typeof(x) == 'string' && typeof(y) == 'number'){
console.log('(string, number):' + x + ',' + y);
}
}
disp("abc"); // 输出:(string): abc
disp(1,"xyz"); // 输出:(number, string):1,xyz
disp("hello", 100); // 输出:(string, number):hello,100
//disp(1, 1); // 类型不匹配会报错:TS2345: Argument of type '1' is not assignable to parameter of type 'string'.
函数重载
4)Number对象是原始数值number的包装对象,封装了更多的方法。
// Number对象测试
// Number对象是原始数值的包装对象
var num1: number = 100;
var num2 = new Number(num1);
var num3 = new Number('123'); // 可以接受字符串转换
var num4 = new Number(null); //
var num5 = new Number('0xA'); // 十六进制,等于十进制的10
var num6 = new Number('123a'); // 如果一个参数值不能转换为一个数字将返回非数字值 NaN (Not a Number) console.log('Test typeof:');
console.log(typeof num1); // 输出:number
console.log(typeof num2); // Number是一个对象,输出:object
console.log(typeof num3); // 输出:object
console.log(typeof num4); // 输出:object
console.log(typeof num5); // 输出:object
console.log(typeof num6); // 输出:object console.log('Value test:');
console.log(num1.toString()); //
console.log(num2.toString()); //
console.log(num3.toString()); //
console.log(num4.toString()); //
console.log(num5.toString()); //
console.log(num6.toString()); // NaN //console.log(num2 + num3); 编译错误,TS2365: Operator '+' cannot be applied to types 'Number' and 'Number'.
number类型和Number对象测试
TypeScript快速笔记(二)的更多相关文章
- Typescript 学习笔记二:数据类型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- TypeScript快速笔记(一)
刚学习TypeScript,但因为马上要用,主要是寻求先快速上手,而后再求精. 推荐学习网站: 1)https://www.runoob.com/typescript/ts-tutorial.html ...
- Typescript 学习笔记一:介绍、安装、编译
前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记六:接口
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Typescript 学习笔记三:函数
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- [.NET] 《Effective C#》快速笔记(二)- .NET 资源托管
<Effective C#>快速笔记(二)- .NET 资源托管 简介 续 <Effective C#>读书笔记(一)- C# 语言习惯. .NET 中,GC 会帮助我们管理内 ...
随机推荐
- word定义多级列表
1.单击开始选项卡里的多级列表按钮,在下拉列表中选择定义新的多级列表 2.先设置第一级编号,选择阿拉伯数字1,2,3,...,并在自动编号“1”的左右分别输入“第”“章”,级别链接到样式选择标题一 3 ...
- 异步IO\数据库\队列\缓存\RabbitMQ队列
本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 Redis\Memcached缓存 Paramiko SS ...
- Delphi主消息循环研究(Application.Run和Application.Initialize执行后的情况)
Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; 第一步,貌似什么都不做,但如果提前定义I ...
- P2220 [HAOI2012]容易题
传送门 首先 $(\sum_{i=1}^{n}a_i)(\sum_{i=1}^{m}b_i)$ 展开以后包含了所有 $ab$ 两两相乘的情况并且每种组合只出现一次 发现展开后刚好和题目对序列价值的定义 ...
- 常用css相关笔记
最后一个css不加样式 .nav-sort li:not(:last-child) { border-bottom:#3e3e3e 1px solid; } 垂直居中 vertical-align: ...
- CSS中:first-child伪类
使用 :first-child 伪类来选择作为某个元素的第一个子元素.这个特定伪类很容易遭到误解,所以有必要举例来说明.考虑以下标记: 如下: html: <div> <p>T ...
- todo JVM笔记
之前给自己定了很多计划,要学Dubbo,Netty,SSHM源码,Tomcat源码...这些基本浅尝辄止,很难继续研读,过不了多久就忘了. 觉得还是基础不够,所以决定把<JVM>.< ...
- Linux 解决E: Sub-process /usr/bin/dpkg returned an error code (1)错误
在用apt-get安装软件时出现了类似于 install-info: No dir file specified; try --help for more information.dpkg: 处理 g ...
- Centos安装 Apache2.4提示 APR not found的解决办法
在安装apache2.2.22版本的时候没有任何问题,可直接使用命令编译安装. 但是,在apache 2.4.12版本,./configure 进行配置时, 提示 configure: error: ...
- sed 流编辑命令
1.命令功能 sed非交互式的流编辑器,sed不会修改源文件内容,除非重定向来保存输出结果:默认情况下所有的输出行都将被打印到屏幕上. 2.语法格式 sed [option] {script-on ...