Open Edwardelric opened 6 years ago
因为typescript2.7版本以后,类的属性必须初始化,否则会报错。 在tsconfig.json里添加以下记录即可:
"compilerOptions": {
....
"strictPropertyInitialization": false
}
或者 使用类型断言 !:,赋予空值即可!
@Getter loaded!: boolean;
typescript 的 decorator 还不支持类型推导,在配合 vuex使用的时候无法通过vuex-class获得类型推导,你可以尝试下vue-typescript-util在不使用decorator的模式下获得vuex几乎全类型推导
1、vue-cli 项目搭建完成。 2、通过vuex-class的@Getter 调用定义好的 getter方法报未定义类型
import { State, Action, Getter } from "vuex-class"; @Component export default class Main extends Vue { @Getter load: boolean; => (装饰器方式调用报错 Property 'load' has no initializer and is not definitely assigned in the constructor) mounted() { console.log(this.$store.getters.load); => (直接调用可以成功) } }
getters.ts 里面代码如下: import { GetterTree } from "vuex";
const getters: GetterTree<any, any> = { load(state): boolean { const { load } = state; return !!load; } } export default getters;
tips: 试验后发现是node_modules包不一致。使用你的vue-typescript-dpapp-demo的node_modules可以正常运行,但copy 你的package.json在本地npm install后运行就报上述错误。