作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用类型脚本为 vue 添加自我插件。
但是当我使用 vue 原型(prototype)中的方法时,我的方法 $auth
在 myComponent 类型上不存在。我还为插件添加了.d.ts,但我认为他有点不正确,而且我认为在插件中不需要使用安装,还是需要?只是在一些例子中我没有看到安装,但在文档中说 - 需要使用安装。
我的插件
import _Vue from 'vue';
import store from '@/store'
import * as firebase from 'firebase';
export default {
install: (Vue: typeof _Vue, options?: any) => {
const base = firebase.initializeApp(config);
const auth = firebase.auth();
Vue.prototype.$auth = {
login: async (username: string, pass: string) => {
return await auth.signInWithEmailAndPassword(username, pass)
},
logout: async () => {
await auth.signOut()
}
};
auth.onAuthStateChanged((user: any) => {
store.commit('updateUser',{ user })
})
}
}
declare module 'vue/types/vue' {
interface Vue {
$auth: {
login: (username: string, pass: string) => Promise<any>
};
}
}
export default class SignUp extends Vue {
email: string = '';
password: string = '';
async onSubmit(){
if ((this.$refs.form as any).validate()) {
const auth = await this.$auth.login(this.email, this.password)
}
}
}
最佳答案
install
函数是一个严格的要求,这个函数是 Vue 内部在 Vue.use(YourAwesomePlugin)
中使用的。加载你的插件。 d.ts
)。因此,如果您将 myPlugin.d.ts
的内容放在到一个主插件文件 - 它会加载你的界面和$auth
将存在于 this
. .d.ts
文件工作,您只需要在该文件中导入 vue。
关于typescript - 如何为 vue 插件添加类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55311595/
我是一名优秀的程序员,十分优秀!