java中函数的表达,如何表达“用T作为参数|的函数字符串,它是TypeScript中T“的键...
我有以下TypeScript,它可以工作:
interface Columns {
[s: string]: string | ((item: any) => string);
}
const exportAsCsv = function (data: any[], columns: Columns): void {
const header = Object.keys(columns)
.map(x => `"${x}"`)
.join(";");
const rows = [];
for (const item of data) {
const row = Object
.values(columns)
.map(field => typeof field === 'function' ? field(item) : item[field])
.map(x => (x || '').replace(/"/, '""'))
.map(x => `"${x}"`)
.join(";");
rows.push(row);
}
console.log([header, ...rows].join("\r\n"));
}
我們的想法是傳入一個對象數組,一個列對象,其中鍵是 Headers (可以是任何字符串),值應該是屬性的名稱或返回值的函數 .
const users = [{id: 1, name: 'Alice', isCool: true}, ...];
const columns = {
'Id': 'id,
'Name': 'name',
'Is cool': u => u.isCool ? 'Yes' : 'No',
};
exportToCsv(users, columns);
這一切都有效,但我想知道如何一般地編寫 Columns 類型 . 繼續獲取不可分配的東西,輸入聲明但未使用的參數等,等等 .
interface Columns {
[s: string]: ?;
}
const exportAsCsv = function (data: T[], columns: Columns): void
我該如何正確表達?
總結
以上是生活随笔為你收集整理的java中函数的表达,如何表达“用T作为参数|的函数字符串,它是TypeScript中T“的键...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 比较,PHP类型比较
- 下一篇: java调用接口失败重试,httpcli