确保参数是一个数组

Jon*_*amb 0 javascript arrays typescript

我正试图找到一种方法来检查函数参数是否是一个数组.如果不是,请将其转换为数组并对其执行功能,否则只需对其执行一项功能.

例:

interface employee {
    first: string,
    last: string
}

function updateEmployees (emp: employee | employee[]) {
    let employees = [];
    if (emp instanceof Array) employees = [emp];
    else employees = emp;
    employees.forEach(function(e){
        return 'something'
    })
}
Run Code Online (Sandbox Code Playgroud)

这似乎对我有用,但却发出警告 Type 'employee' is not assignable to type 'any[]'. Property 'length' is missing in type 'employee'.

Nit*_*mer 5

这是你的功能的固定版本:

function updateEmployees (emp: employee | employee[]) {
    let employees: employee[] = [];
    if (emp instanceof Array) employees = emp;
    else employees = [emp];
    employees.forEach(function(e){
        return 'something'
    })
}
Run Code Online (Sandbox Code Playgroud)

但它可以更短:

function updateEmployees(emp: employee | employee[]) {
    (emp instanceof Array ? emp : [emp]).forEach(function(e){
        return 'something'
    })
}
Run Code Online (Sandbox Code Playgroud)

  • 甚至`[] .concat(emp).forEach(...`。 (4认同)