V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiaoming1992
V2EX  ›  Angular

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

  •  
  •   xiaoming1992 · 2020-05-29 15:43:36 +08:00 · 4167 次点击
    这是一个创建于 1400 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    <h2>Products</h2>
    
    <div *ngFor="let product of products">
    
      <h3>
          {{ product.name }}
      </h3>
    
    </div>
    

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

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

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

    是我的问题,第一次用 ng new my-app 的时候,不知道怎么回事,vscode 在模板文件中没有智能提示(甚至双大括号内的变量连高亮都没有),我还以为模板文件就是如此呢,刚刚在线尝试了一下才发现是有提示的。
    beyondex
        15
    beyondex  
       2020-05-30 10:22:26 +08:00 via Android
    因为模板和 ts 是分离的两个文件,一个.html 一个 .ts ,vscode 不知道对应哪个类型,webstorm 是可以很好的识别的,vscode 找找有没有插件吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2760 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:05 · PVG 20:05 · LAX 05:05 · JFK 08:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.