programing

Vuex mapState 기능에 유형을 제공하는 방법

prostudy 2022. 4. 15. 21:35
반응형

Vuex mapState 기능에 유형을 제공하는 방법

내 Vuex 구성 요소에서 Typecript를 사용 중이며 다음 매핑 기능에 유형을 제공하려는 경우mapState. 직감적으로 이렇게 썼다.

@Component({
  computed: {
    ...mapState( MY_NAMESPACE, {
      fooIndex: ( state: MyModel ) => state.values.indexOf('foo')
    })
    // more computed props here
  }
})
export default class MyComponent extends Vue {}

이 작업은 과거에 수행되었지만 종속성을 업그레이드한 후 더 이상 작동하지 않고 오류가 발생함No overload matches this call. Overload 1 of 6, '(namespace: string, map: string[]): { [x: string]: Computed; }', gave the following error.

해결 방법으로 기능 파라미터에서 유형을 제거하고 다음과 같이 캐스팅할 수 있다.

@Component({
  computed: {
    ...mapState( MY_NAMESPACE, {
      fooIndex: state => (state as MyModel).values.indexOf('foo')
    }),
  }
})
export default class MyComponent extends Vue {}

유형을 더 잘 표현할 수 있는 방법이 없을까?

유형을 에 대한 일반 형식으로 제공할 수 있다.mapState방법, 이와 같은 것:

@Component({
  computed: {
    ...mapState<MyModel>( MY_NAMESPACE, {
      fooIndex: (state: MyModel) => state.values.indexOf('foo')
    }),
  }
})
export default class MyComponent extends Vue {}

참조URL: https://stackoverflow.com/questions/60510684/how-can-i-supply-types-to-vuex-mapstate-functions

반응형