大家好,
我想請問,我在環境vite、vue3、typescript中,
試著使用單例模式。
程式碼可以正常運作,但是程式碼裡有,'new' expression,whose target lacks a construct signature,implicitly has an 'any' type. ts(7009)
的錯誤顯示。
不過我不曉得要如何更改程式碼.....
請問要如何更改?
我的程式碼如下:
<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>
---解決方法---
那段,我改成這樣,就可以了
fooService = new (FooService as any)();