typescript - 打字稿动态可见的类方法
问题描述
知道如何使动态可见的类方法吗?
class Foo {
method1() {}
method2() {}
}
有时我只需要显示method1,有时两者都需要。
一种可能的解决方案可能是这样的,唯一的问题是,该方法适用于作为“属性”可见的提示。这只是一个小细节,但无论如何我喜欢它是否真的是方法。
解决方案
第一:仅在编译时检查可见性,因此请记住,如果您想阻止对方法的访问,则无法在运行时抛出错误。如果这是您的用例,请尝试其他方法。
如果您想要编译时检查,那么您真正追求的是更好的类型。
所以你有你的课Foo
:
class Foo {
method1() {}
method2() {}
}
如果在您的部分代码中您不想method1
被调用,这只是意味着您需要定义一个type
或interface
没有该方法。
type FooMethod2Only {
method2: () => void;
}
method1
在某些情况下不可见实际上意味着您正在使用没有该方法的类型。
因此,如果您使用这样的功能:
function doSomething(foo: FooMethod2Only) {
foo.method1();
}
doSomething(new Foo());
然后打字稿会抱怨,因为尽管 Foo 有一个method1
,但参数类型没有它。
因此,与其在属性/方法可见性中考虑这一点,不如将其视为为不同目的使用不同的类型/接口。
推荐阅读
- node.js - 将 Express Routes 与 Google Assistant 意图匹配
- vue.js - Vue.js 中远程图像的 CORS 问题
- html - 使用 CSS Grid 对齐极端的项目
- mongodb - 容器启动时无法初始化 MongoDB
- python - 如何使用函数在python中导入变量?
- html - 浏览器在正文中移动 DOCTYPE 和 head 标签
- python - 如何在 PyQt / PySide 中绘制 RoundedRect 边框轮廓相同的宽度?
- android - 将 tensorflow 编译到我的 Android 项目中时发生闪回
- django - 根据用户从表单中的选择创建 url。Django 给出 NoReverseMatch,说我至少需要两个参数而我没有
- ubuntu - imshow 导致图形窗口挂起,程序似乎无法运行