&安培;在Typescript类型中

时间:2017-09-18 12:39:43

标签: typescript typescript-typings

找到一个Typescript definition file,声明以下是函数输入所需的类型。

settings: Settings & AlertModalSettings

如何声明可用作上述有效输入的类型?

尝试以下操作,它无效

let a: SweetAlert.Settings = {

};
let b: SweetAlert.PromtModalSettings = {

};

swal(a & b);

2 个答案:

答案 0 :(得分:1)

settings的类型为intersection type

变量/函数参数参数必须是Settings & AlertModalSettings类型,并且必须实现两种类型的所有成员

function swal(a: Settings & AlertModalSettings) {
....
};

答案 1 :(得分:1)

您不想使用a & b,因为在这种情况下&bitwise AND operator,它会对数字起作用。

如果您已有SweetAlert.Settings个对象和SweetAlert.PromtModalSettings个对象,则可以将它们与Object.assign()spread operator for object literals合并:

declare let a: SweetAlert.Settings;
declare let b: SweetAlert.PromtModalSettings;
const abObjectAssign = Object.assign({}, a, b);
swal(abObjectAssign); // okay

const abSpread = { ...a, ...b };
swal(abSpread); // okay

如果您没有对象ab并且想要将对象文字传递给swal(),那么您只需要给它一个与SweetAlert.Settings匹配的对象。 {1}}和SweetAlert.PromtModalSettings

swal({
  title: 'title', // required in Settings
  allowOutsideClick: false // optional in PromtModalSettings
}); // okay

希望有所帮助;祝你好运!