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

Typescript 声明 变量/常量 时,如果有初始值,还要显示指明类型吗?

  •  
  •   gzf6 · 2019-05-28 21:50:43 +08:00 · 2165 次点击
    这是一个创建于 2013 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如: let name = 'v2ex';
    还需要写出这样吗:let name:String = 'v2ex';
    我总担心代码量稍大的时候,标示不清楚,别人看起来费劲,但是按第二种写法会不会太啰嗦了,不够简洁?

    10 条回复    2019-05-29 11:21:46 +08:00
    mooncakejs
        1
    mooncakejs  
       2019-05-28 22:03:00 +08:00 via iPhone
    不需要
    mooncakejs
        2
    mooncakejs  
       2019-05-28 22:04:06 +08:00 via iPhone
    有时候需要,变量复杂一点 let a = “ sss ” 不能给 "sss"类型
    q8164305
        3
    q8164305  
       2019-05-28 22:04:09 +08:00 via Android
    不需要的,自己试一下不就知道了
    gzf6
        4
    gzf6  
    OP
       2019-05-28 22:06:40 +08:00
    @q8164305 哦,可能没表达清楚,我知道可以省略,只是讨论下代码风格
    WittBulter
        5
    WittBulter  
       2019-05-28 22:14:20 +08:00
    建议写类型的:除了基础类型以外的类型,如联合类型、字面量类型、构造体之类。
    不过 tslint 和 eslint 都支持指定成员属性和变量是否需要强加类型,不管什么风格只要加了 Lint 能够完全符合 Lint 都是整洁的代码。
    TS 在类型系统上非常的智能,有类似于 Result / typeof / keyof 之类的东西,不强制写类型问题也不是很大。
    gzf6
        6
    gzf6  
    OP
       2019-05-28 22:18:37 +08:00
    @WittBulter 受教了
    learnshare
        7
    learnshare  
       2019-05-28 22:18:53 +08:00
    最好写明,读起来更清晰
    CodingNaux
        8
    CodingNaux  
       2019-05-29 08:40:34 +08:00 via iPhone
    能类型推导的就不写呗。没 type 提示的就写呗
    aleen42
        9
    aleen42  
       2019-05-29 09:24:33 +08:00
    就相当于文档一样,不能嫌啰嗦
    buhi
        10
    buhi  
       2019-05-29 11:21:46 +08:00
    有的时候需要(能推导出来就不需要) 有的时候不需要(不能推导出来)
    比如

    type Kind = "A"|"B"
    let a1 = "A"
    let a2:Kind = "B"
    a2 = a1 //这里就会报错, a1 是 string, a2 是 Kind, Kind 的取值范围比 string 小, 所以 string 不能赋值给 Kind
    //解决办法就是显式声明 a1 是 Kind
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2651 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 04:01 · PVG 12:01 · LAX 20:01 · JFK 23:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.