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. word定义多级列表

    1.单击开始选项卡里的多级列表按钮,在下拉列表中选择定义新的多级列表 2.先设置第一级编号,选择阿拉伯数字1,2,3,...,并在自动编号“1”的左右分别输入“第”“章”,级别链接到样式选择标题一 3 ...

  2. 异步IO\数据库\队列\缓存\RabbitMQ队列

    本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 Redis\Memcached缓存 Paramiko SS ...

  3. Delphi主消息循环研究(Application.Run和Application.Initialize执行后的情况)

    Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; 第一步,貌似什么都不做,但如果提前定义I ...

  4. P2220 [HAOI2012]容易题

    传送门 首先 $(\sum_{i=1}^{n}a_i)(\sum_{i=1}^{m}b_i)$ 展开以后包含了所有 $ab$ 两两相乘的情况并且每种组合只出现一次 发现展开后刚好和题目对序列价值的定义 ...

  5. 常用css相关笔记

    最后一个css不加样式 .nav-sort li:not(:last-child) { border-bottom:#3e3e3e 1px solid; } 垂直居中 vertical-align: ...

  6. CSS中:first-child伪类

    使用 :first-child 伪类来选择作为某个元素的第一个子元素.这个特定伪类很容易遭到误解,所以有必要举例来说明.考虑以下标记: 如下: html: <div> <p>T ...

  7. todo JVM笔记

    之前给自己定了很多计划,要学Dubbo,Netty,SSHM源码,Tomcat源码...这些基本浅尝辄止,很难继续研读,过不了多久就忘了. 觉得还是基础不够,所以决定把<JVM>.< ...

  8. 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 ...

  9. Centos安装 Apache2.4提示 APR not found的解决办法

    在安装apache2.2.22版本的时候没有任何问题,可直接使用命令编译安装. 但是,在apache 2.4.12版本,./configure 进行配置时, 提示 configure: error: ...

  10. sed 流编辑命令

    1.命令功能 sed非交互式的流编辑器,sed不会修改源文件内容,除非重定向来保存输出结果:默认情况下所有的输出行都将被打印到屏幕上. 2.语法格式 sed  [option]  {script-on ...