- TypeScript 基础
- TypeScript - 首页
- TypeScript - 路线图
- TypeScript - 概述
- TypeScript - 环境搭建
- TypeScript - 基本语法
- TypeScript vs. JavaScript
- TypeScript - 特性
- TypeScript - 变量
- TypeScript - let & const
- TypeScript - 运算符
- TypeScript 基本类型
- TypeScript - 类型
- TypeScript - 类型注解
- TypeScript - 类型推断
- TypeScript - 数字
- TypeScript - 字符串
- TypeScript - 布尔值
- TypeScript - 数组
- TypeScript - 元组
- TypeScript - 枚举
- TypeScript - any
- TypeScript - never
- TypeScript - 联合类型
- TypeScript - 字面量类型
- TypeScript - 符号
- TypeScript - null vs. undefined
- TypeScript - 类型别名
- TypeScript 控制流
- TypeScript - 决策
- TypeScript - if 语句
- TypeScript - if else 语句
- TypeScript - 嵌套 if 语句
- TypeScript - switch 语句
- TypeScript - 循环
- TypeScript - for 循环
- TypeScript - while 循环
- TypeScript - do while 循环
- TypeScript 函数
- TypeScript - 函数
- TypeScript - 函数类型
- TypeScript - 可选参数
- TypeScript - 默认参数
- TypeScript - 匿名函数
- TypeScript - Function 构造函数
- TypeScript - rest 参数
- TypeScript - 参数解构
- TypeScript - 箭头函数
- TypeScript 接口
- TypeScript - 接口
- TypeScript - 接口扩展
- TypeScript 类和对象
- TypeScript - 类
- TypeScript - 对象
- TypeScript - 访问修饰符
- TypeScript - 只读属性
- TypeScript - 继承
- TypeScript - 静态方法和属性
- TypeScript - 抽象类
- TypeScript - 存取器
- TypeScript - 鸭子类型
- TypeScript 高级类型
- TypeScript - 交叉类型
- TypeScript - 类型保护
- TypeScript - 类型断言
- TypeScript 类型操作
- TypeScript - 从类型创建类型
- TypeScript - keyof 类型运算符
- TypeScript - typeof 类型运算符
- TypeScript - 索引访问类型
- TypeScript - 条件类型
- TypeScript - 映射类型
- TypeScript - 模板字面量类型
- TypeScript 泛型
- TypeScript - 泛型
- TypeScript - 泛型约束
- TypeScript - 泛型接口
- TypeScript - 泛型类
- TypeScript 其他
- TypeScript - 三斜杠指令
- TypeScript - 命名空间
- TypeScript - 模块
- TypeScript - 环境声明
- TypeScript - 装饰器
- TypeScript - 类型兼容性
- TypeScript - Date 对象
- TypeScript - 迭代器和生成器
- TypeScript - Mixin
- TypeScript - 实用程序类型
- TypeScript - 装箱和拆箱
- TypeScript - tsconfig.json
- 从 JavaScript 到 TypeScript
- TypeScript 有用资源
- TypeScript - 快速指南
- TypeScript - 有用资源
- TypeScript - 讨论
TypeScript - 默认参数
默认参数
在 TypeScript 中,我们可以为函数参数赋予默认值。这些参数可以显式地传递值,被称为默认参数。
当函数调用时缺少参数或参数值为 undefined 时,函数将使用这些默认初始化值。
语法
TypeScript 默认参数的语法如下:
function functionName(param1[:type], param2[:type] = defaultValue)
这里函数 functionName() 接受两个参数 - param1 和 param2。第一个参数 param1 是必需参数,而第二个参数 param2 是默认参数。param2 初始化为默认值 defaultValue。当 functionName() 函数调用时未传递 param2 的值时,defaultValue 将用作 param2 的值。
让我们通过一些 TypeScript 示例程序来了解函数默认参数。
示例:简单的默认参数
让我们看下面的例子:
function greet(name: string, age: number = 30){ console.log(`Hi ${name}, your age is ${age}.`) } greet('John', 50); greet('John');
在上面的例子中,参数 age 是一个默认参数,初始化值为 30。参数 name 是必需参数。
编译后,它将生成以下 JavaScript 代码。(此处应插入生成的JavaScript代码)
function greet(name, age = 30) { console.log(`Hi ${name}, your age is ${age}.`); } greet('John', 50); greet('John');
输出 (此处应插入输出结果)
Hi John, your age is 50. Hi John, your age is 30.
示例:必需参数后的默认参数
默认参数应该在函数定义中位于必需参数之后
在下面的例子中,我们将默认参数 y 放置在必需参数 x 之后。(此处应插入代码)
function sum(x: number, y: number=10): number{ return x + y; } console.log(sum (20,30)); console.log(sum (30));
编译后,它将生成以下 JavaScript 代码。(此处应插入生成的JavaScript代码)
function sum(x, y = 10) { return x + y; } console.log(sum(20, 30)); console.log(sum(30));
输出结果如下:(此处应插入输出结果)
50 40
示例:必需参数前的默认参数
但是,如果将默认参数放在必需参数之前,并且在不为默认参数传递值的情况下调用函数,则会显示错误。让我们看下面的例子:(此处应插入代码)
function sum(x: number=10, y:number):number{ return x + y; } console.log(sum(20,30)); // 50 console.log(sum(30)); // NaN
上面的 TypeScript 程序将显示以下错误:(此处应插入错误信息)
Expected 2 arguments, but got 1.
并产生以下输出:(此处应插入输出结果)
50 NaN
示例:将函数作为默认参数的值传递
在下面的例子中,我们将参数 b 初始化为 getNum() 函数作为默认值。getNum() 函数返回数字 10。当第二个参数缺失时,getNum() 函数返回的值将用作函数内部参数的值。(此处应插入代码)
function getNum(): number { return 10; } function mul(a: number, b = getNum()) { return a * b; } console.log(mul(20, 5)); console.log(mul(20))
输出 (此处应插入输出结果)
100 200
可选参数与默认参数
我们可以不传递默认参数的值来调用函数。我们也可以不传递可选参数的值来调用函数。
示例:默认参数
在下面的例子中,age 参数的默认值为 30。这意味着如果您不为 age 参数传递值,则函数将对 age 使用默认值 30。(此处应插入代码)
function greet(name: string, age: number = 30){ console.log(`Hi ${name}, your age is ${age}.`); } greet('John', 50); greet('John');
编译后,它将生成以下 JavaScript 代码。(此处应插入生成的JavaScript代码)
function greet(name, age = 30) { console.log(`Hi ${name}, your age is ${age}.`); } greet('John', 50); greet('John');
上述示例代码的输出如下:(此处应插入输出结果)
Hi John, your age is 50. Hi John, your age is 30.
示例:可选参数
在下面的例子中,age 参数是可选的。这意味着您可以不为 age 参数传递值来调用 greet 函数。当不传递 age 参数的值时。(此处应插入代码)
function greet(name: string, age?:number){ if (age) { console.log(`Hello ${name}, you are ${age} years old`); } else{ console.log(`Hello ${name}`); } } greet ('Shahid', 35); greet ('Shahid');
编译后,它将生成以下 JavaScript 代码。(此处应插入生成的JavaScript代码)
function greet(name, age) { if (age) { console.log(`Hello ${name}, you are ${age} years old`); } else { console.log(`Hello ${name}`); } } greet('Shahid', 35); greet('Shahid');
上述代码的输出如下:(此处应插入输出结果)
Hello Shahid, you are 35 years old Hello Shahid
我们不能同时声明一个参数为可选和默认。
function greet(name: string, age?: number = 30){ console.log(`Hi ${name}, your age is ${age}.`); }
上面的程序将显示以下错误:(此处应插入错误信息)
Parameter cannot have question mark and initializer.