3 ms·
Why Record and not object?
by ttymck 4y ago
Why Record and not object?
- lediur 4y agoLinters for TypeScript recommend using `Record<string, any>` instead of `object`, since using the `object` type is misleading and can make it harder to use as intended. See: - https://typescript-eslint.io/rules/ban-types/ https://typescript-eslint.io/rules/ban-types/ - https://github.com/typescript-eslint/typescript-eslint/issues/2063 https://github.com/typescript-eslint/typescript-eslint/issue... - https://github.com/microsoft/TypeScript/issues/21732 https://github.com/microsoft/TypeScript/issues/21732 - https://github.com/microsoft/TypeScript/pull/50666 https://github.com/microsoft/TypeScript/pull/50666
- davidatbu 4y agoAvoid the Object and {} types, as they mean 'any non-nullish value'. This is a point of confusion for many developers, who think it means 'any object type'. https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/ban-types.md#options https://github.com/typescript-eslint/typescript-eslint/blob/...
- KrishnaShripad 4y agoBecause you only want to merge two objects that have keys with string type. "object" is represented as Record<any, any>. That would mean, you can use any type as key. Here is an example: function merge< A extends object, B extends object >(a: A, b: B): A & B { return { ...a, ...b } } const result = merge(() => {}, () => {}) // should fail! const anotherResult = merge([1, 2], [3, 4]) // should fail! Which is obviously not what you want. This table here gives you a good overview of differences between object and Record<string, unknown>: https://www.reddit.com/r/typescript/comments/tq3m4f/the_difference_between_object_and_recordstring/ https://www.reddit.com/r/typescript/comments/tq3m4f/the_diff...