angular - Typescript/Angular 类型声明没用?

标签 angular typescript

这种情况现在在我身上发生过多次,所以我想问一下我是否做错了什么或者 Typescript/Angular 真的不这样做。据我了解,最大的优势之一是变量、参数等的类型声明(接口(interface))。

今天我遇到了这个问题:

一个简单的开关按钮:

<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(),返回的值不是 230 或 232,而不是所需的 23 或 25。它将 pageSize 作为字符串。这种类型的错误很难发现,这次我很幸运,因为很容易找到...... Angular、tslint 或我的编辑器都没有告诉我不能在数字变量中存储字符串。

据我了解, typescript 应该检查兼容性,或者 Angular 是否以某种方式禁用此处的监听?或者我做错了什么?

最佳答案

TypeScript 类型仅由开发工具使用(linter、自动完成等)。
对于运行时,所有代码都会转换为 JavaScript,并且不再有可用的类型信息。
因此,对于用户输入或代码外部的其他数据源,您需要确保数据符合您期望的类型。

关于angular - Typescript/Angular 类型声明没用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44539570/

相关文章:

java - 登录后重定向到自定义网址

angular - 错误: Can't resolve all parameters for TypeDecorator: Angular 2 RC-6

angular - 如何在 Ionic 4 的变化中添加选项卡动画?

html - 具有相同颜色但具有不同不透明度的对象

父级上的 Angular 2 事件监听器不会从子级发出的事件中调用

javascript - 无法读取未定义的属性 'request'

angular - 'This' 在 subscribe 中未定义

reactjs - Typescript React 空函数作为 defaultProps

javascript - TypeScript:如何无错误地访问 onChange 事件数据? (对象可能是 'null' )

javascript - 在 Typescript 模块中定义类