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

2020-01-04 08:07:26 +08:00
 xiaoming1992
3027 次点击
所在节点    程序员
16 条回复
binux
2020-01-04 08:18:13 +08:00
private?
binux
2020-01-04 08:19:04 +08:00
protected?
Justin13
2020-01-04 08:47:51 +08:00
做不到
creanme
2020-01-04 09:08:00 +08:00
感觉你说的有点像 static 呢?
xiaoming1992
2020-01-04 09:11:46 +08:00
感谢大家,是 protected
KuroNekoFan
2020-01-04 09:12:09 +08:00
云了一下感觉可以在 constructor 里用访问器
H15018327040
2020-01-04 09:16:23 +08:00
protected 权限的属性实例也能访问吧
xiaoming1992
2020-01-04 10:28:26 +08:00
@H15018327040 #7 可以吗?我看文档不能访问的啊(好像只是在 ts 的语法里限制访问,从 js 引用过来之后强行访问还是可以访问的,好像?我没看过转换后的源码,不过这就够了)
giuem
2020-01-04 10:54:17 +08:00
用 Symbol
xiaoming1992
2020-01-04 11:19:02 +08:00
@giuem 不太懂,用 Symbol 的话,难道是
```javascript
const SymbolProp = Symbol("some prop")

class A {
[SymbolProp]: "some val";
}
```
如果是这样的话,我得把 SymbolProp 导出去,子类要用这个属性,还得从这儿导入才能用吗?那这样就有些麻烦了哦
blindie
2020-01-04 11:19:30 +08:00
H15018327040
2020-01-04 12:03:41 +08:00
@xiaoming1992 protected 是父类子类都能访问,静态属性也能通过实例访问,暂时没有想到满足你需求的解决方案,或者说这个需求有问题。
H15018327040
2020-01-04 12:10:58 +08:00
@xiaoming1992 已找到方法,protected static _name 定义一个只在类和子类中不通过实例可以访问的属性,然后在类的构造函数中删除这个属性,那通过 new 产生的实例都没有这个属性,但是可以通过类访问。
xiaoming1992
2020-01-04 13:44:40 +08:00
@H15018327040 谢谢,protected 就可以啊
H15018327040
2020-01-04 13:53:37 +08:00
@xiaoming1992 protected 在实例中可以访问
xiaoming1992
2020-01-04 14:05:12 +08:00
@H15018327040 看文档说不可以,自己试了试,也确实不可以啊?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/634948

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX