首页 文章

打字稿/角度类型声明没用?

提问于
浏览
2

这件事现在发生在我身上多次,所以我想问一下我做错了什么,或者打字稿/ Angular真的不这样做 . 根据我的理解,最大的优势之一是变量,参数等的类型声明(接口) .

今天我遇到了这个问题:

一个简单的开关按钮:

<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以某种方式禁用此处的监听?或者我做错了什么?

1 回答

  • 1

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

相关问题