angular - 使用解构如何在具有默认自定义类型的函数中接收参数
问题描述
我创建了一个使用 Mat-snackbar 发出警报的服务,我使用解构来接收函数中的变量,我需要其中一个变量是特定类型
export class NotificationsService {
// MatSnackBarVerticalPosition = 'top' | 'bottom'; this is the required type
constructor(private snackBar: MatSnackBar) {
}
alert({ message, buttonText = 'Ok', verticalPosition = 'top' }) {
let alertConfig = {
verticalPosition: verticalPosition,
};
this.snackBar.open(message, buttonText, alertConfig);
}
}
verticalPosition 属性是 MatSnackBarVerticalPosition 类型(它可以是'bottom'或'top'),我不知道如何设置默认值 top 或 bottom 因为它告诉我有一个错误,因为字符串类型不能转化为 MatSnackBarVerticalPosition
解决方案
因此,假设您希望实现以下目标:
let a = {
aa: 123,
bb:456,
cc
};
const {aa, bb, cc = 'Top'}: {aa: number, bb: number, cc: string} = a;
console.log(cc); // Will log 'Top'
我认为在您的情况下,可能是以下情况:
interface yourType {
message: string,
buttonText: string,
verticalPosition: MatSnackBarVerticalPosition
}
alert({ message, buttonText = 'Ok', verticalPosition = 'top' }: yourType) {
let alertConfig = {
verticalPosition: verticalPosition,
};
this.snackBar.open(message, buttonText, alertConfig);
}
你能试试这个吗?:)
推荐阅读
- python - Flask SSE 无法连接到事件流。Redis 正在运行吗?
- javascript - 将元素添加到页面而不重新渲染已添加的元素
- python - Docker 运行 IOError:[Errno 2] 没有这样的文件或目录:'/media/test2/diversity/file1'
- psycopg2 - 什么会导致 extras.execute_values 超时?
- azure - 为什么 Azure Blob 存储返回 201,但不上传?
- python - 当两个条件都满足时,如何让 Discord Bot 做出响应?
- python - Python:从带有分隔符“\”的表中选择列
- bash - 如何使用 bash 参数替换来删除“./”?
- amazon-web-services - 从 API 网关触发的 lambda 函数的最大预配置并发应该是多少?
- python - 如何将过滤器从下拉列表传递到 django-import-export 视图