今天我遇到了这个问题:
一个简单的开关按钮:
<p-selectButton [options]="posLayouts" (onChange)="handle($event)" [(ngModel)]="pageSize"></p-selectButton>
变量:
pageSize: number;
posLayouts: SelectItem[];
//On mistake I setted the value here as a string
this.posLayouts.push({label:'1 Woche', value: '1'});
this.posLayouts.push({label:'3 Wochen', value: '3'});
在更改功能中,我只需使用posLayouts中的值调用另一个函数。
handle(e){getPager(this.pageSize)}
getPager(pageSize: number = 3){
let totalPages: number;
totalPages = 23 + pageSize -1
console.log(totalPages)
}
console.log(),返回比eiter 230或232而不是想要的23或25.它将pageSize作为字符串。这种类型的错误很难找到,这次我有运气因为它很容易找到... 无论是Angular还是tslint或我的编辑器都告诉我,我无法将字符串存储在数字变量中。
根据我的理解,打字稿应检查兼容性或Angular以某种方式禁用此处的监听?或者我做错了什么?
答案 0 :(得分:1)
TypeScript类型仅供开发工具使用(linter,autocompletion,...) 对于运行时,所有代码都转换为JavaScript,并且不再提供类型信息 因此,对于用户输入或来自代码外部的其他数据源,您需要确保数据符合您期望的类型。