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

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

  •  
  •   gzf6 · 200 天前 · 986 次点击
    这是一个创建于 200 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    type Kind = "A"|"B"
    let a1 = "A"
    let a2:Kind = "B"
    a2 = a1 //这里就会报错, a1 是 string, a2 是 Kind, Kind 的取值范围比 string 小, 所以 string 不能赋值给 Kind
    //解决办法就是显式声明 a1 是 Kind
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1102 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 18:34 · PVG 02:34 · LAX 10:34 · JFK 13:34
    ♥ Do have faith in what you're doing.