提问人:Yakiyo 提问时间:2/15/2023 更新时间:2/15/2023 访问量:52
在类中强制转换私有成员类型
casting a private members type in a class
问:
我正在使用一个类编写 Rust 的 Result 枚举的简单打字稿端口
class Result<T, E> {
private value: T | E;
private _ok: boolean;
private constructor(f: () => T) {
try {
this.value = f();
this._ok = true;
} catch (e) {
this.value = e as E;
this._ok = false;
}
}
static from<T, E>(f: () => T) {
return new Result<T, E>(f);
}
is_ok(): this['value'] is T {
return this._ok;
}
unwrap(): T {
if (this.is_ok()) return this.value as T;
throw new Error("some error");
}
}
当 is_ok 返回 true 时,我想断言 value 属性是 T,否则是 E,is_ok为 false,这意味着该值是错误的。
但是使用使打字稿抛出一个错误,说无法访问私有值,this['value']
再次使用抛出不同的错误 我该如何解决这个问题?可以只使用每种方法,但它不会在用户端解决它,我相信应该有一种更糟糕的方法。任何帮助都是值得赞赏的this is { value: T }
value as T
答: 暂无答案
评论
private
public
T | (T & E)
Result<T, E>
Result<T, E> & Result<T, never>
value
(T | E) & (T | never)
(T | E) & T
(T & T) | (E & T)
T | (E & T)
T