iT邦幫忙

0

TypeScript Obj的引數不可指派給類型 'string' 的參數

  • 分享至 

  • xImage

近期在學習typeScript時遇到點小問題,
再封裝fetch Api時,但是帶入參數時卻會噴出Error:
類型 '{ Cate: string; Sp: number; }' 的引數不可指派給類型 'string' 的參數。

找不到名稱Cate和Sp
不曉得該如何做調整,求各位前輩指導

// Api/tags.ts

export const getTag = async (Cate?: string, Sp?: number) => {
  console.log(Cate, Sp)
  await useHttp.get('/app/v1/article/hotView', {
    params: {
      Cate,
      Sp
    }
  })
}
// index.vue

<script lang="ts" setup>
//Error:類型 '{ Cate: string; Sp: number; }' 的引數不可指派給類型 'string' 的參數。
const tags = await TagApi.getTag({
  Cate: "台積電",
  Sp: 15,
})

//Error:找不到名稱Cate和Sp
const tags2 = await TagApi.getTag(Cate:"台積電", Sp:15)
</script>

圖一
https://ithelp.ithome.com.tw/upload/images/20230110/20135609d4GFJCYlol.png

圖二
https://ithelp.ithome.com.tw/upload/images/20230110/20135609ZjKDcBdU8m.png

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2023-01-10 12:57:32 檢舉
啊你getTag 明明都指定了 cate和sp這兩個參數的類型,怎麼會餵了一個不同類型的參數呢?
jim55167 iT邦新手 4 級 ‧ 2023-01-10 16:22:45 檢舉
const tags = await TagApi.getTag("台積電", 15)
這種寫法噴出找不到名稱Cate和Sp,因此才試著改為Object形式,麻煩前輩指點一下
froce iT邦大師 1 級 ‧ 2023-01-10 16:45:30 檢舉
https://www.typescriptlang.org/play?#code/MYewdgzgLgBA5gUygFQIZxjAvDAFAYVSgQH4AuGaAJwEsw4AaGAZQAdyYwBXAWwCMEVAJTYAfDADeAKEyhIIADYIAdApBwCRBEzZCAvlKmIU6XACJUls0wCMAJgDMMIUA
jim55167 iT邦新手 4 級 ‧ 2023-01-10 17:22:10 檢舉
前輩您好,我有更新檔案了,如圖二所示!Cate和Sp還是不行
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
小哈片刻
iT邦研究生 4 級 ‧ 2023-01-10 22:27:53
最佳解答

這有兩個方向可以改。
一、因為你宣告的函式需要兩個參數,所以可以在呼叫函式時,改成傳入兩個參數。

const tags2 = await TagApi.getTag("台積電", 15);

二、你可以改函式的宣告,把參數改成一個物件

export const getTag = async (options: {Cate?: string, Sp?: number}) => {
    await useHttp.get('/app/v1/article/hotView', {
      params: options
    })
}

const tags2 = await TagApi.getTag({Cate:"台積電", Sp:15});
1
jason71708
iT邦新手 3 級 ‧ 2023-01-10 15:51:35

下面那段改成

const tags = await TagApi.getTag("台積電", 15)

你的 getTag 接受兩個參數 CateSp

export const getTag = async (Cate?: string, Sp?: number) => {
...
}

但是下面你卻給 getTag 一個物件 { Cate: "台積電", Sp: 15 }

const tags = await TagApi.getTag({
  Cate: "台積電",
  Sp: 15,
})
jim55167 iT邦新手 4 級 ‧ 2023-01-10 16:21:33 檢舉
const tags = await TagApi.getTag("台積電", 15)

因為上面這種寫法存在問題,噴出找不到名稱Cate和Sp

我要發表回答

立即登入回答