【发布时间】:2018-03-02 02:36:50
【问题描述】:
我有一个问题,如何通过映射类型获取数组项类型
例如这里当我使用array 方法时,我可以推断出数组项的类型,但是如何在arrayStr 方法中进行呢?为什么在这个例子中 aStrId 的类型是 'never'?
class One<T> {
constructor(
data: T
) { }
array<R>(getter: ((obj: T) => R[])): Two<R> {
return null;
}
arrayStr<K extends keyof T, R>(name: K, idField: keyof R): Two<R> {
return null;
}
}
class Two<T> {
getItem(): T {
return null;
}
getAsArray(): T[] {
return [];
}
}
const data = {
a: [{ q: 1 }, { q: 2 }]
};
const one = new One(data);
const a = one.array(p => p.a);
const aValue = a.getItem().q;
const oneStr = new One(data);
const aStre = oneStr.arrayStr('a');
const aStrValue = aStre.getItem().q;
const oneStrId = new One(data);
const aStrId = oneStrId.arrayStr('a', 'q');
const aStrValueId = aStre.getItem().q;
【问题讨论】:
-
我很难理解这个问题。您可以直接发布代码以及您遇到问题的特定位置吗?
arrayStr()方法应该做什么?签名很奇怪(似乎没有办法知道R应该是什么)并且实现(return null)没有给我提示。
标签: typescript types