iT邦幫忙

0

【已解決】vite,vue3中如何使用Design Pattern 單例模式

  • 分享至 

  • xImage

大家好,
我想請問,我在環境vite、vue3、typescript中,
試著使用單例模式。
程式碼可以正常運作,但是程式碼裡有,'new' expression,whose target lacks a construct signature,implicitly has an 'any' type. ts(7009)的錯誤顯示。

不過我不曉得要如何更改程式碼.....
/images/emoticon/emoticon06.gif
請問要如何更改?

我的程式碼如下:

<script setup lang="ts">
    
    const FooServiceSingleton = (function(){
        // 未初始化的單例對象
        var fooService : any = null;
        // 隱藏的Class的構造函數 
       
        function FooService() {
            let theBtn = document.createElement('button')
            theBtn.innerText='我是新增的按鈕'
            document.body.appendChild(theBtn)
        }
        return {  
            //創建/獲取單例對象的函數 
            getInstance: function () { 
                if (!fooService) { 
                    fooService = new FooService(); //這裡會有ts的錯誤顯示
                } 
                return fooService; 
            } 
        }
    })()

    //測試是否是同一個
    // const fooService1 = FooServiceSingleton.getInstance(); 
    // const fooService2 = FooServiceSingleton.getInstance();
    // console.log(fooService1 === fooService2);
</script>

<template>
    <button @click="FooServiceSingleton.getInstance()">只會顯示一次</button>
</template>

---解決方法---
那段,我改成這樣,就可以了
/images/emoticon/emoticon45.gif

 fooService = new (FooService as any)(); 
Homura iT邦高手 1 級 ‧ 2022-03-29 17:11:12 檢舉
話說都用ts了
怎麼還在用any!@@
froce iT邦大師 1 級 ‧ 2022-03-29 21:47:34 檢舉
我也想問這個。
而且幹嘛還在用js的class寫法。
greenriver iT邦研究生 4 級 ‧ 2022-03-30 08:32:13 檢舉
我剛學ts的關係XD
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答