采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
请教老师和同学们:
location: 课程2-12《复杂函数类型补充学习》中的重载写法 question: 只是简单将64行return (str+strx).length修改为65行return 0, TS检查器就飙红了。
return (str+strx).length
return 0
不是很清楚哪里写的不对,请教大家!
是的 重载函数的返回值应该保持一致, 代码改为如下即可:
//申明函数重载
function
getString(str: unknown): number;
getString(str: unknown, str2: string): number;
//实现函数
getString(str1: unknown, str2?: string) {
if
(
typeof
str1 ===
'string'
) {
return
0;
}
1;
console.log(`getString value = ${JSON.stringify(getString(1))}`);
这个和Java 的重载感觉差不多
刚才看了视频中重载函数的使用例子,感觉是不是如果自己写Demo可能还行,如果在项目中一般不会在一个方法中有调用返回string 有调用返回number 的两个不同函数定义, 这样一般会是的代码逻辑不够清晰, 要不然实现两个不同的函数内容, 个人意见供参考:
//函数重载
getStringValue(str: string): string;
getStringValue(str1: string, str2: string): number;
getStringValue(str1: string, str2?: string) {
&& str2) {
(str1 + str2).length;
//TS调用第二函数定义
str1;
//TS 调用第一个函数定义
console.log(`The value is called - ${getStringValue(
'123'
,
'werwer'
)}`);
你仔细看下你的函数定义, 一个是返回参数是string,一个是number, 而你调用的函数时返回string 但是你的if 条件句判断return 0 是number, 你转成string 因该就没问题了,
你的这段代码我有两个疑问:
getstring 为什么重载地二函数返回是number?
真正逻辑的函数为什么为什么没有返回值?
其实对于多个参数代码也可以这么写,, 供参考:
//返回仅为字符串的数据类型,函数可以写成泛型话, 此处体会<初学者和最强辅助OpenAI(chatGPT>
//给出的两个版本,自己也在学习中
//优化前(自己最初的写法)
// const getStringResult = <T>(...args : unknown[]): T[] => {
// const filterString: T[] = [];
// args.filter(arg => {
// if (typeof arg === 'string') {
// filterString.push(arg as T);
// }
// });
// return filterString;
//优化后(Open AI -> ChatGPT 给出的优化方案如下)
const getStringResult = <T>(...args : unknown[]): T[] => {
args.filter((arg :unknown) =>
arg ===
) as T[];
const inputValue_1 : unknown =
'aa4'
;
const inputValue_2 : unknown = undefined;
const inputValue_3 : unknown =
true
const inputValue_4 : unknown = 2;
console.log(`getStringResult value = ${JSON.stringify(getStringResult<string>(inputValue_1, inputValue_2, inputValue_3, inputValue_4))}`);
首先,感谢慕圣9599806你的回复。 上面已标明是课程代码,所以需求层面的东西就不多说了 问题的核心是:在实现签名中,TS应当可以推断出是哪一个重载签名了,此处不应该报错有些不理解。 我目前的解决办法是:给实现签名指定联合类型的返回值
登录后可查看更多问答,登录/注册
Dell老师专为TypeScript小白打造的,全栈式教学TS入门课程
2.3k 13
1.5k 12
1.1k 11
1.2k 10
1.1k 8
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号