首页 > 解决方案 > 使用解构如何在具有默认自定义类型的函数中接收参数

问题描述

我创建了一个使用 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

标签: angulartypescriptangular-materialdestructuring

解决方案


因此,假设您希望实现以下目标:

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);
  }
  

你能试试这个吗?:)

参考


推荐阅读