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 会帮助我们管理内 ...
随机推荐
- 《剑指offer》面试题23 从上往下打印二叉树 Java版
注意层序遍历的时候对每一层的处理方式可能不同,这里把每一层的元素保存进一个List中了,那么就需要记录每一层的数量. public List<List<Integer>> se ...
- java代码转化为jar包,再转化为.exe文件步骤
下面是具体步骤: 一.先把自己的程序发布成jar文件 这是eclipse自带的功能,右键工程包-->Export 然后选择Java-->JAR file,next 选择输出路径,next ...
- 05-Django-session-admin
# session- 为了应对HTTP协议的无状态性- 用来保存用户比较敏感的信息- 属于request的一个属性- 常用操作: - request.session.get(key, defaultV ...
- 40. Combination Sum II (JAVA)
Given a collection of candidate numbers (candidates) and a target number (target), find all unique c ...
- django基础篇04-自定义simple_tag和fitler
自定义simple_tag app目录下创建templatetags目录 templatetags目录下创建xxpp.py 创建template对象register,注意变量名必须为register ...
- DRF之三大认证
一.用户认证Authorticatons 1.源码解析 第一步. 找入口 def dispatch(self, request, *args, **kwargs): # 1.首先我们进入的是APIVi ...
- 算法学习之二分查找算法的python实现
——参考自<算法图解> 我们假设需要查找的数组是有序的(从大到小或者从小到大),如果无序,可以在第四行后插入一句 my_list.sort() 完整代码如下 def binary_sear ...
- Apache 的 httpd.conf 配置文件
http.conf 是 Apache 的配置文件,Apache 的常见配置主要是通过修该文件实现的,修改之后需要 重启 Apache 服务生效. Httpd.conf #Apache 安装目录 Ser ...
- octave-bug - 报告 GNU Octave 中的 bug
SYNOPSIS 总览 octave-bug [-s subject] DESCRIPTION 描述 octave-bug 是一个 shell 脚本,用于以一种标准的格式撰写有关 Octave 的 b ...
- Docker介绍,安装和常用的命令
Docker是Google公司推出的Go语言开发的,基于Linux内核的cgroup,namespace,AUFS类的UnionFS等技术.对进程进行封装格力,属于操作系统层面的虚拟化技术.隔离的进程 ...