ts 限制属性仅能在类和子类内部访问,实例不能访问,应该怎么做? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
xiaoming1992

ts 限制属性仅能在类和子类内部访问,实例不能访问,应该怎么做?

  •  
  •   xiaoming1992 Jan 4, 2020 via Android 3789 views
    This topic created in 2312 days ago, the information mentioned may be changed or developed.
    Supplement 1    Jan 4, 2020
    谢谢大,#2 同学说 protected,确实可以,谢谢了,已经找到了,不用再回答了
    16 replies    2020-01-04 14:05:12 +08:00
    binux
        1
    binux  
       Jan 4, 2020
    private?
    binux
        2
    binux  
       Jan 4, 2020   1
    protected?
    Justin13
        3
    Justin13  
       Jan 4, 2020 via Android
    做不到
    creanme
        4
    creanme  
       Jan 4, 2020
    感觉你说的有点像 static 呢?
    xiaoming1992
        5
    xiaoming1992  
    OP
       Jan 4, 2020
    感谢大家,是 protected
    KuroNekoFan
        6
    KuroNekoFan  
       Jan 4, 2020 via iPhone
    云了一下感觉可以在 constructor 里用访问器
    H15018327040
        7
    H15018327040  
       Jan 4, 2020
    protected 权限的属性实例也能访问吧
    xiaoming1992
        8
    xiaoming1992  
    OP
       Jan 4, 2020 via Android
    @H15018327040 #7 可以吗?我看文档不能访问的啊(好像只是在 ts 的语法里限制访问,从 js 引用过来之后强行访问还是可以访问的,好像?我没看过转换后的源码,不过这就够了)
    giuem
        9
    giuem  
       Jan 4, 2020 via iPhone
    用 Symbol
    xiaoming1992
        10
    xiaoming1992  
    OP
       Jan 4, 2020
    @giuem 不太懂,用 Symbol 的话,难道是
    ```Javascript
    const SymbolProp = Symbol("some prop")

    class A {
    [SymbolProp]: "some val";
    }
    ```
    如果是这样的话,我得把 SymbolProp 导出去,子类要用这个属性,还得从这儿导入才能用吗?那这样就有些麻烦了哦
    blindie
        11
    blindie  
       Jan 4, 2020
    H15018327040
        12
    H15018327040  
       Jan 4, 2020
    @xiaoming1992 protected 是父类子类都能访问,静态属性也能通过实例访问,暂时没有想到满足你需求的解决方案,或者说这个需求有问题。
    H15018327040
        13
    H15018327040  
       Jan 4, 2020
    @xiaoming1992 已找到方法,protected static _name 定义一个只在类和子类中不通过实例可以访问的属性,然后在类的构造函数中删除这个属性,那通过 new 产生的实例都没有这个属性,但是可以通过类访问。
    xiaoming1992
        14
    xiaoming1992  
    OP
       Jan 4, 2020 via Android
    @H15018327040 谢谢,protected 就可以啊
    H15018327040
        15
    H15018327040  
       Jan 4, 2020
    @xiaoming1992 protected 在实例中可以访问
    xiaoming1992
        16
    xiaoming1992  
    OP
       Jan 4, 2020
    @H15018327040 看文档说不可以,自己试了试,也确实不可以啊?
    About     Help     Advertise     Blog     API     FAQ     Solana     2371 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 49ms UTC 05:54 PVG 13:54 LAX 22:54 JFK 01:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86