我有以下内容:
export interface SimpleChanges {
[propName: string]: SimpleChange;
}
export class PrivateComponent implements OnChanges {
@Input() private text: string;
ngOnChanges(changes: SimpleChanges): void {
console.log(changes.text.currentValue);
}
}
编译器给了我一个警告:
console.log(changes.text.currentValue);
^^^^
Error:(13, 29) TS2339:Property 'text' does not exist on type 'SimpleChanges'.
如何判断对象是否具有此属性以及其他一些属性?我试过这样:
ngOnChanges(changes: SimpleChanges as {text?:string, other?:string}): void {
但语法已关闭。
此外,正如@JBNizet
建议的那样,以下工作:
console.log(changes['text'].currentValue);
为什么?
答案 0 :(得分:1)
如果使用error : fanion « 0 » used with « %p » gnu_printf format
,TypeScript编译器将发出错误,因为SimpleChanges类中没有名为changes.text
的正式属性。这样做是因为TypeScript的重点是为JavaScript带来类型安全性,并发现JavaScript无法找到的代码中的潜在错误。
要访问text
属性,您需要使用text
,这样可以清楚地了解您所知道的TypeScript,并接受该属性是动态属性,而不是在SimpleChange中正式定义。