• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xiaoming1992
V2EX  ›  程序员

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

  •  
  •   xiaoming1992 · Jan 4, 2020 via Android · 4181 views
    This topic created in 2507 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
    binux
    Jan 4, 2020
    1
    private?
    binux
    binux
    Jan 4, 2020❤️1
    2
    protected?
    Justin13
    Justin13
    Jan 4, 2020 via Android
    3
    做不到
    creanme
    creanme
    Jan 4, 2020
    4
    感觉你说的有点像 static 呢?
    xiaoming1992
    xiaoming1992
    OP
    Jan 4, 2020
    5
    感谢大家,是 protected
    KuroNekoFan
    KuroNekoFan
    Jan 4, 2020 via iPhone
    6
    云了一下感觉可以在 constructor 里用访问器
    H15018327040
    H15018327040
    Jan 4, 2020
    7
    protected 权限的属性实例也能访问吧
    xiaoming1992
    xiaoming1992
    OP
    Jan 4, 2020 via Android
    8
    @H15018327040 #7 可以吗?我看文档不能访问的啊(好像只是在 ts 的语法里限制访问,从 js 引用过来之后强行访问还是可以访问的,好像?我没看过转换后的源码,不过这就够了)
    giuem
    giuem
    Jan 4, 2020 via iPhone
    9
    用 Symbol
    xiaoming1992
    xiaoming1992
    OP
    Jan 4, 2020
    10
    @giuem 不太懂,用 Symbol 的话,难道是
    ```javascript
    const SymbolProp = Symbol("some prop")

    class A {
    [SymbolProp]: "some val";
    }
    ```
    如果是这样的话,我得把 SymbolProp 导出去,子类要用这个属性,还得从这儿导入才能用吗?那这样就有些麻烦了哦
    blindie
    blindie
    Jan 4, 2020
    11
    H15018327040
    H15018327040
    Jan 4, 2020
    12
    @xiaoming1992 protected 是父类子类都能访问,静态属性也能通过实例访问,暂时没有想到满足你需求的解决方案,或者说这个需求有问题。
    H15018327040
    H15018327040
    Jan 4, 2020
    13
    @xiaoming1992 已找到方法,protected static _name 定义一个只在类和子类中不通过实例可以访问的属性,然后在类的构造函数中删除这个属性,那通过 new 产生的实例都没有这个属性,但是可以通过类访问。
    xiaoming1992
    xiaoming1992
    OP
    Jan 4, 2020 via Android
    14
    @H15018327040 谢谢,protected 就可以啊
    H15018327040
    H15018327040
    Jan 4, 2020
    15
    @xiaoming1992 protected 在实例中可以访问
    xiaoming1992
    xiaoming1992
    OP
    Jan 4, 2020
    16
    @H15018327040 看文档说不可以,自己试了试,也确实不可以啊?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   913 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 19:40 · PVG 03:40 · LAX 11:40 · JFK 14:40
    ♥ Do have faith in what you're doing.