我刚接触打字稿,因此很难找到合适的关键字组合来进行搜索。我认为我需要使用类型条件,但是我还不太了解它们如何工作。
我想做的是传递一个执行某种操作的函数。如果该函数返回特定类型,那么我想将其包装在一个框中,否则返回原始值。
例如:
class Box<T> {
value: T;
constructor(value: T) {
this.value = value;
}
}
function wrapIfString<T, TResult>(fn: (value: T) => TResult, value: T):
TResult extends string ? Box<string> : TResult {
const result = fn(value);
if (value instanceof String) {
return new Box<string>(result);
}
return result;
}
但这无法编译。这是我可以在打字稿中做的事情吗?
答案 0 :(得分:1)
希望这会有所帮助。...有条件的返回类型通常会导致类似这样的问题,那就是它比可能的清理器更容易像这样重载...
convert img.jpg -resize 210x127^ -gravity center -extent 210x127 -write mpr:img +delete -size 630x380 tile:mpr:img result2.png