Ожидайте сокета Домена Unix, который будет связан

Объектный Картопостроитель в TypeScript

, мне нравятся примеры, которые используют Object.fromEntries такой в качестве [1 110] этот , но тем не менее это не очень просто в использовании. Ответы, которые используют Object.keys и затем ищут key на самом деле, делают несколько поисков, которые не могут быть необходимыми.

я соглашаюсь с [1 111] @alexander-mills , что должны быть помехи Object.map функция. Я расширил его реализацию в TypeScript и получил это:

Использование:

const myObject = { 'a': 1, 'b': 2, 'c': 3 };

// keep the key and modify the value
let obj = Object.map(myObject, val => val * 2);
// obj = { a: 2, b: 4, c: 6 }


// modify both key and value
obj = Object.map(myObject,
    val => val * 2 + '',
    key => (key + key).toUpperCase());
// obj = { AA: '2', BB: '4', CC: '6' }

Код:

interface Dictionary {
    [key: string]: T;
}

interface ObjectConstructor {
    map(
        obj: Dictionary,
        valSelector: (val: TValue, obj: Dictionary) => TResult,
        keySelector?: (key: string, obj: Dictionary) => string,
        ctx?: Dictionary
    ): Dictionary;
}

function objectMap(
    obj: Dictionary,
    valSelector: (val: TValue, obj: Dictionary) => TResult,
    keySelector?: (key: string, obj: Dictionary) => string,
    ctx?: Dictionary
) {
    const ret = {} as Dictionary;
    for (const key of Object.keys(obj)) {
        const retKey = keySelector
            ? keySelector.call(ctx || null, key, obj)
            : key;
        const retVal = valSelector.call(ctx || null, obj[key], obj);
        ret[retKey] = retVal;
    }
    return ret;
}

Object.map = objectMap;

, Если Вы не хотите TypeScript (почему?) тогда копируют вышеупомянутый код в [1 112] Детская площадка TypeScript для получения кода JavaScript.

причина я поместил 116-секундный, то, потому что это является дополнительным.

кроме того, так как это не изменяет Object прототип, я думаю, что безопасно, но если Вы не хотите затрагивать эти Object интерфейс, можно просто удалить последнюю строку и использование objectMap вместо этого.

5
задан Vincent Cantin 2 April 2012 в 23:32
поделиться

1 ответ

Не полный ответ, но ...

Если вы используете Linux, интерфейс inotify позволит вам поймать a первые несколько полезных шагов операции:

  • unlink 'оставшееся бывшее гнездо вызовет на нем IN_DELETE_SELF .
  • bind вызовет ] IN_CREATE в родительском каталоге.

К сожалению, сервер не может подключиться 'до тех пор, пока он не прослушает . Хотя это следующий логический шаг, нет никакой гарантии, что он сделает это сразу. Не похоже, что inotify предоставляет интерфейс для этого.

3
ответ дан 15 December 2019 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: