typescript - TypeScript 中的静态块
问题描述
为了测试网络编码/解码逻辑,我用 Java 和 JavaScript 进行了一对测试。对于这些测试,我有几乎只是一堆常量的数据提供者。
现在,在 Java 中,我有一个数据提供程序,它使用静态块为我要测试的类之一创建一个随机字节数组,如下所示:
public static final byte[] BYTE_ARRAY_RANDOM = new byte[4 * 1024];
static {
new Random().nextBytes(BYTE_ARRAY_RANDOM);
}
public static final FileBody FILE_BODY_RANDOM = new FileBody(BYTE_ARRAY_RANDOM);
现在我想在 TypeScript 中反映这一点。我已经尝试过了,但这会导致编译器错误,因为我显然做错了静态块:
public static BYTE_ARRAY_RANDOM: Uint8Array = new Uint8Array(4 * 1024);
static {
BYTE_ARRAY_RANDOM.set(pseudoRandomBytes(bytes.length));
}
public static FILE_BODY_RANDOM: FileBody = new FileBody(TestDataProvider.BYTE_ARRAY_RANDOM);
我还尝试了许多其他方法,但到目前为止还没有找到解决方案。
那么,我如何在 JavaScript 中做到这一点?我想要的是创建一个常量,每次运行测试时提供一个任意随机字节数组。
或者换一种方式问这个问题:我怎样才能在 TypeScript 中把这个静态化?
let bytes = new Uint8Array(4 * 1024);
bytes.set(pseudoRandomBytes(bytes.length));
let fileBody = new FileBody(bytes);
解决方案
我不认为 TypeScript 支持静态块。对于您的特定情况,您可以创建一个辅助函数:
class Foo {
public static bytes = createRandomBytes(4 * 1024);
public static fileBody = new FileBody(Foo.bytes);
}
function createRandomBytes(length: number) {
const bytes = new Uint8Array(length);
bytes.set(pseudoRandomBytes(bytes.length));
return bytes;
}
推荐阅读
- python - Python 用于二维矩阵上的圆形过滤器/窗口?
- c++ - 在 C++ 项目中使用预编译头文件
- javascript - 使用 typeorm 在 postgres 中保存多对多列
- yii2 - 如何在使用相同数据库的两个 yii2 应用程序中管理登录
- python - 使用自定义权重在pytorch中初始化权重?
- javascript - How to format complicated array with ._groupBy
- python - 基于高变量相关性的相关矩阵过滤与使用向量在规模上选择与目标变量相关性最小的相关性
- c++ - 计算时间和空间复杂度的问题?
- react-native - 用户注销时如何重置redux store的状态?
- google-tag-manager - 阻止从谷歌标签管理器加载 youtube 相关的 JS