Javascript/Typescript - 如何从代码中移除重复项
我有一段代码基本上是在重复自己。唯一的区别是参数的类型,scan 调用 this.getDbClient().scan(params),而 query 调用 this.getDbClient().query(params)。
static scanTable = async (params: DynamoDB.DocumentClient.ScanInput) => {
let items;
let scanResults: any[] = [];
do {
items = await this.getDbClient().scan(params).promise();
(items.Items || []).forEach((item) => scanResults.push(item));
params.ExclusiveStartKey = items.LastEvaluatedKey;
} while (typeof items.LastEvaluatedKey !== 'undefined');
return scanResults;
}
static queryTable = async (params: DynamoDB.DocumentClient.QueryInput) => {
let items;
let scanResults: any[] = [];
do {
items = await this.getDbClient().query(params).promise();
(items.Items || []).forEach((item) => scanResults.push(item));
params.ExclusiveStartKey = items.LastEvaluatedKey;
} while (typeof items.LastEvaluatedKey !== 'undefined');
return scanResults;
}
我尝试提取函数并使用
async (params: DynamoDB.DocumentClient.ScanInput | DynamoDB.DocumentClient.QueryInput)
然后尝试去做
if params instanceof DynamoDB.DocumentClient.ScanInput call `scan(params)`
else if params instanceof DynamoDB.DocumentClient.QueryInput call `query(params)`
但似乎不能使用 instanceof
错误:类型 'typeof DocumentClient' 上不存在属性 'ScanInput'。ts(2339)
错误:类型 'typeof DocumentClient' 上不存在属性 'QueryInput'。ts(2339)
我在这里可以做什么来避免代码重复?有什么想法吗?