class MyStore {
data: Record<string, string> = {};
getKey(key: string, defaultValue?: string): string | undefined {
return this.data[key] ?? defaultValue;
}
}
const store = new MyStore();
const value1 = store.getKey("test");
const value2 = store.getKey("test", "def");
1.现在value1
的类型是string | undefined
,是对的,没有问题。
1.但是value2
也有相同类型的value1
。如何更新getKey()
的签名,以便在提供默认值时,没有undefined
。就像value2
应该只有string
类型。
2条答案
按热度按时间eh57zj3b1#
最简单的方法(这也很好地发挥了智能感知)是函数重载:
Playground链接
你也可以用泛型和条件类型来解决这个问题,这是一个可读性相当低的解决方案:
Playground链接
5rgfhyps2#
使用泛型应该可以,但是你的返回值不应该包含字符串。因为,你的
Record
的值是any
类型。如果您打算只使用字符串作为值,我建议更新记录的类型。