angular 模板不够"typescript", 是我的姿势不对吗?

2020-05-29 15:43:36 +08:00
 xiaoming1992

想尝试angular, 但是感觉angular的模板"不够 typescript", 例如官网上的一段template:

<h2>Products</h2>

<div *ngFor="let product of products">

  <h3>
      {{ product.name }}
  </h3>

</div>

单纯看这个模板, 完全看不出来product的类型, 同时typescripteslint也没能力管控这个模板中的变量。相对的来说, 在reacttsx中, typescripteslint是能够对变量进行充分的静态分析的。

无意引战, 确实希望试试angular, 可是, 是我使用的姿势不对吗?

4203 次点击
所在节点    Angular
15 条回复
gouflv
2020-05-29 15:51:39 +08:00
你说的没错
wellsc
2020-05-29 15:53:59 +08:00
让我想起了 python 的 jinja2
Oktfolio
2020-05-29 15:58:24 +08:00
let product of products 不是 TypeScript 的特性吗? products 不就是 Product[] 类型吗?遍历出来不就是 Product 类型吗?
weixiangzhe
2020-05-29 15:58:33 +08:00
确实 react 支持更好啊
hantsy
2020-05-29 15:59:02 +08:00
模板都是有自己一套指令体系(或者叫标签,或者其它),除了 C# /.net 那种带语言,还有传统 JSP 嵌套 Java ( JSP 2.0 支持 XML 语法) 痕迹比较深,其它都差不多。
FireFoxAhri
2020-05-29 15:59:14 +08:00
这个还好,至少 IDE 能提示变量补全,之前<ng-template>里面 let 的变量。IDE 补全都没有,前段时候试了试 好像总算有提示了,但是还是没有类型信息。。
hantsy
2020-05-29 16:00:08 +08:00
@weixiangzhe React jsx 那种语法真的丑陋,瞬间找到了写 PHP 4 的感觉。
faceRollingKB
2020-05-29 16:41:28 +08:00
吓得我赶紧看了一眼,webstorm 有的,2019.3.4
xiaoming1992
2020-05-29 17:36:44 +08:00
@FireFoxAhri 这我不太懂, 毕竟 Product 类型是在.ts 文件中定义的, 而在模板文件中, 编辑器都不知道 product 类型是什么, 怎么补全呢?
zhuangzhuang1988
2020-05-29 17:53:15 +08:00
ochatokori
2020-05-29 18:15:38 +08:00
用 angular language service 插件,其他类型都有检查,但是 for of 的不行,product 会是 any
FireFoxAhri
2020-05-29 18:40:25 +08:00
@xiaoming1992 IDEA 是可以的,包括我说的那种开始不支持,后来 IDEA 更新了后支持了
chinagxwei
2020-05-29 18:49:09 +08:00
很好奇,楼主 products 在组建类中不会是声明成 any 吧?如果声明是 product[]是会有提示的。难道我用的 IDEA 跟楼主不是同一个?
xiaoming1992
2020-05-29 21:38:10 +08:00
@chinagxwei 我误解了,原来在`heroes.component.html`文件中,编辑器会自动去`heroes.component.ts`中找`hero`属性。

是我的问题,第一次用 ng new my-app 的时候,不知道怎么回事,vscode 在模板文件中没有智能提示(甚至双大括号内的变量连高亮都没有),我还以为模板文件就是如此呢,刚刚在线尝试了一下才发现是有提示的。
beyondex
2020-05-30 10:22:26 +08:00
因为模板和 ts 是分离的两个文件,一个.html 一个 .ts ,vscode 不知道对应哪个类型,webstorm 是可以很好的识别的,vscode 找找有没有插件吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/676727

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX