2017-06-14 68 views

回答

1

根據您的要求:

沒有覆蓋.sortBy類型定義

你最好的選擇是用一個函數來包裝的功能?

function sortBy<T, K extends keyof T>(key: K, arr: T[]) { 
    return _.chain(arr) 
      .sortBy(key) 
      .value(); 
} 

作爲額外的將允許部分應用sortBy。因此,您可以使用功能sortBy來定義其他功能,如sortByAgesortByName

const sortBy = <T, K extends keyof T>(key: K) => (arr: T[]) => { 
    return _.chain(arr) 
      .sortBy(key) 
      .value(); 
} 

interface Person { 
    name: string; 
    age: number; 
} 

const sortByAge = sortBy<Person, "age">("age"); 
const sortByName = sortBy<Person, "name">("name"); 

// Error Type '"namr"' does not satisfy the constraint '"age" | "name"'. 
const sortByWrongKey = sortBy<Person, "namr">("namr"); 


const people: Person[] = [ 
    { name: "John", age: 30 }, 
    { name: "Jack", age: 27 } 
]; 

const peopleSortedByAge = sortByAge(people); 
const peopleSortedByName = sortByName(people); 
相關問題