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函数

普通参数的定义方式:

function functionName(){}
function functionName(parm1: [type], parm2: [type]): returnType{}

可选参数的定义方式:

function functionName(parm1:[type], parm2?: [type]): returnType{} // 在可选参数后面加‘?’

实例:

 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快速笔记(二)的更多相关文章

  1. Typescript 学习笔记二:数据类型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  2. TypeScript快速笔记(一)

    刚学习TypeScript,但因为马上要用,主要是寻求先快速上手,而后再求精. 推荐学习网站: 1)https://www.runoob.com/typescript/ts-tutorial.html ...

  3. Typescript 学习笔记一:介绍、安装、编译

    前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...

  4. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  5. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  8. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  9. [.NET] 《Effective C#》快速笔记(二)- .NET 资源托管

    <Effective C#>快速笔记(二)- .NET 资源托管 简介 续 <Effective C#>读书笔记(一)- C# 语言习惯. .NET 中,GC 会帮助我们管理内 ...

随机推荐

  1. IntelliJ IDEA 2019.3 这回真的要飞起来了,新特性抢先看!

    IntelliJ IDEA 才公布下一个主要版本 2019.3 的 Roadmap,近日就发布了 IntelliJ IDEA 2019.3 的首个早期访问版本(即 EAP 版本),版本号为 2019. ...

  2. 通过metaclass实现精简的ORM框架

    摘抄于<python-3-廖雪峰> 使用ORM框架 class User(Model): #定义类的属性到列的映射: id = IntegerFiled('id') name = Stri ...

  3. [BZOJ3133] [Baltic2013]ballmachine(树上倍增+堆)

    [BZOJ3133] [Baltic2013]ballmachine(树上倍增+堆) 题面 有一个装球机器,构造可以看作是一棵树.有下面两种操作: 从根放入一个球,只要下方有空位,球会沿着树滚下.如果 ...

  4. 卸载yum-mysql

    注意事项:1. 卸载yum MYSQLsystemctl status mysqlsystemctl stop mysqlsystemctl disable mysqld rpm -qa | grep ...

  5. 洛谷P1823 [COI2007] Patrik 音乐会的等待(单调栈+二分查找)

    洛谷P1823 [COI2007] Patrik 音乐会的等待(单调栈+二分查找) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1333275 这个题不是很 ...

  6. UESTC-1057 秋实大哥与花(线段树+成段加减+区间求和)

    秋实大哥与花 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  7. python学习第五十三天configParser模块的使用

    configParser 模块用于生成和修改常见配置文档,python 3.x为configParser,配置软件的常见配置格式 模块的用法 import configparser config=co ...

  8. DEV控件的分页控件,实现勾选复选框

    /// <summary> /// 单元格的点击事件 /// </summary> /// <param name="sender"></ ...

  9. 拼接HTML代码在UIWebVIew中显示

    其原理:通过网络请求获得相关的信息,再通过手机端进行拼HTML,然后在WebView进行展示,此处还对文章中的图片增加点击效果,可以保存到相册中:文章的样式已经存在项目中,直接去调用: 1:首先了解两 ...

  10. DRF之三大认证

    一.用户认证Authorticatons 1.源码解析 第一步. 找入口 def dispatch(self, request, *args, **kwargs): # 1.首先我们进入的是APIVi ...