TypeScript递归泛型中this as unknown as T类型断言的安全性问询
关于递归泛型类型断言安全性的判断与疑问
请判断以下表述是否正确:
若递归泛型类型变量
T被推断为递归结构中所有节点一致的具体类型S,且S等于或为this的类型R的子类型,同时S遵循针对R的里氏替换原则,则this as unknown as T是安全的类型断言。
具体示例代码
type IBSTDflt<K, V> = IBST<K, V, IBSTDflt<K, V>>; interface IBST<K, V, T extends IBST<K, V, T> = IBSTDflt<K, V>> { key: K; value: V; parent?: T; left?: T; right?: T; } type BSTDeflt<K, V> = BST<K, V, BSTDeflt<K, V>>; class BST<K, V, T extends BST<K, V, T> = BSTDeflt<K, V>> implements IBST<K, V, T> { key: K; value: V; parent?: T; left?: T; right?: T; constructor(key: K, value: V, left?: T, right?: T) { this.key = key; this.value = value; if (left) { this.left = left; this.left.parent = this as unknown as T; } if (right) { this.right = right; this.right.parent = this as unknown as T; } } }
我清楚泛型约束T extends BST<K, V, T>并没有上述表述那么严格,但这是我目前能写出的最接近的约束。因此想询问:如果我能保证满足上述更严格的表述条件,是否可以安全地使用this as unknown as T类型断言?
内容的提问来源于stack exchange,提问作者Robert Kajic
相关产品推荐
相关产品推荐

