根據您的用例,有兩種方法可以解決您的問題。如果只想將任何字符串設置為任何特定鍵的值,則不需要使用泛型: function setProperty(obj: Record<string, string>, key: string) { obj[key] = "hello";} 但是,如果對象具有特定的鍵和特定的值,則可以使用如下泛型,以便編譯器類型檢查您的參數: function setProperty<T extends Record<string, string>, K extends keyof T, V extends T[K]>(obj: T, key: K, value: V) { obj[key] = value}type ObjectValue = 'foo' | 'bar'type A = { foo: ObjectValue, baz: 'baz'}const a: A = { foo: 'foo', baz: 'baz'}setProperty(a, 'foo', 'bar') // workssetProperty(a, 'foo', 'baz') // type error 這也有IntelliSense建議的好處。 EDIT: 由于OP只想鍵入check鍵并設置任意字符串,因此此解決方案應該更好: function se