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对象测试

最新文章

  1. 刷新各ifream当前页,下拉项改变触发事件js,给选中项加背景色js
  2. 配置log4j
  3. ajax 请求多张图片数据
  4. 与你相遇好幸运,Tippecanoe在Centos下の安装
  5. javascript中对象函数继承的概念
  6. 用css伪类实现提示框效果
  7. [百科] - SIP(会话发起协议)
  8. AndroidManifest.xml 详解 (四) 之uses-permission
  9. windows 激活等命令
  10. Echarts 中国地图各个省市自治区自定义颜色
  11. 【SSH系列】静态代理&amp;&amp;动态代理
  12. [物理学与PDEs]第5章习题2 Jacobian 的物质导数
  13. java 常用的异常处理
  14. XML的基礎結構
  15. 阿里最新热修复Sophix与QQ超级补丁和Tinker的实现与总结
  16. mycat 1.6 配置【仅学习测试配置使用】
  17. linux之sshfs
  18. memcached stats 命令
  19. zabbix监控进程的CPU和内存占用量,进程数量
  20. mysql备份和还原命令

热门文章

  1. java 数组详细介绍
  2. P1622释放囚犯
  3. 洛谷 P1541 乌龟棋 &amp; [NOIP2010提高组](dp)
  4. 你不知道的props和state
  5. CPM、CPC、CPA、PFP、CPS、CPL、CPR等广告术语是什么意思
  6. ubuntu上的疑难杂症(不定期更新……)
  7. CIC许可更新
  8. nginx 安装 thinkphp5 配置
  9. ascii 八进制
  10. jenkins上job误删除怎么恢复