Если вы хотите, чтобы объект был индексируемым, вам нужен индекс string
.Вы можете использовать тип Record
, чтобы получить этот эффект:
function foo(obj1: Record<string, any>, obj2: Record<string, any>){
obj1.name = 'foo'
}
foo(1, 2) //err
foo("", "") // err
foo({ name: "" }, { name: "" }) // ok
Вы можете рассмотреть более строгий тип, если ваши объекты должны содержать определенное свойство:
function foo(obj1: {name: string } & Record<string, any>, obj2: {name: string } & Record<string, any>) {
obj1.name = 'foo'
}
foo({ name: "" }, { name_: "" }) // error no name