typescript - 如何在带有打字稿的 vue.js 中使用 javascript 组件?
问题描述
我在项目中定义了一个组件,并希望像这样公开,以便在另一个项目中使用:
import ToastNotification from '../ToastNotification'; import Api from './api'; const VueToast = (Vue, options = {}) => { const methods = Api(Vue, options); Vue.$toast = methods; Vue.prototype.$toast = methods; }; ToastNotification.install = VueToast; export default ToastNotification;
在 index.js 我声明:
import VueToast from './toast/js/index'; Vue.use(VueToast);
在另一个项目中,我 npm 将此项目安装为库,但 this.$toast('message') 无法识别。它说“类型''上不存在属性'$toast'”
我提到我设法在项目内部使用了另一个类'this.$toast('')',但无法在另一个项目中管理。该组件是使用 Javascript 在 Vue.js 中实现的,我正在尝试在另一个使用支持 typescript 的 Vue.js 的项目中使用。
我已经尝试在 main.ts 中的项目中声明,但仍然无法正常工作:
从'/src/components/toast/js/index'导入VueToast;
Vue.use(VueToast);
你知道我忘了申报什么吗?
解决方案
要添加$toast
到 Vue 组件实例类型,请在文件中声明以下类型扩充.d.ts
(例如, in src/shims-vue.d.ts
):
视图 2:
import Vue from 'vue'
declare module 'vue/types/vue' {
interface Vue {
$toast: (msg: string) => void;
}
}
视图 3:
declare module '@vue/runtime-core' {
interface ComponentCustomProperties {
$toast: (msg: string) => void;
}
}
推荐阅读
- c# - C# Selenium Angular 无法选择下拉选项
- javascript - XHR 上传 onprogress 事件在 HTTPS 连接上不起作用
- lua - 仅在玩家加入游戏时运行的脚本
- python - 根据具有未知列的值类型格式化熊猫数据框
- asp.net-core - Apache Ignite 中的 InvalidCastException 与 ConcurrentDictionary
- javascript - HTML:在属性中的字符串中嵌套字符串
- r - 将重叠的圆圈添加到具有均匀透明度的传单地图
- c# - .NET 上的 SignalR 无法将派生类或接口的实现发送到客户端
- java - Spring-Integration:如何通过网关触发文件读取
- ios - 访问 tableView.visibleCells 会导致标头重新加载