解构TS中的复杂功能参数

时间:2019-08-17 17:22:07

标签: angular typescript

我有以下模特课程:

export class Book {
    public name: string;
    public id: string;
    ...
} 

export class Author {
    public firstName: string;
    public lastName: string;
    ...
} 

使用上述类的对象的my-component触发跟随事件

this.archiveEntry.emit({ book: this.book, author: this.author });

其html中的父组件使用my-component如下

<my-component (archiveEntry)="archiveEntryHandler($event)" ...> ...

并将后续处理程序绑定到此事件

public archiveEntryHandler({book: Book, author: Author}) {
  let line = `"${book.name}",  ${author.lastName}`;
  ...
}

但是出现以下编译错误

  

错误TS2552:找不到名称“书”。你是说“书”吗?

     

错误TS2552:找不到名称“作者”。您是说“作者”吗?

如何适当地破坏处理程序事件参数?

1 个答案:

答案 0 :(得分:3)

在处理程序中

archiveEntryHandler({book: Book, author: Author})

您为bookauthor变量指定了别名。

{ book: aliasForBook, author: aliasForAuthor }

如果要为解构变量指定类型,请使用以下语法:

archiveEntryHandler({book, author}: {book: Book, author: Author})