O que realmente significa uma assinatura de índice TypeScript?

Estou escrevendo o TypeScript há um tempo e estou confuso sobre o que significa uma assinatura de índice. Por exemplo, este código é legal: function fn(obj: { [x: string]: number }) { let n: number = obj.something; } Mas esse código, que basicamente faz a mesma coisa, não é: function fn(obj:...