Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

computed 中定义的属性相互引用时丢失类型提示

Abierto
#103 0 comentarios 0 reacciones 1 asignado Ver en GitHub

@LastLeaf ya está trabajando en esto.

Desde el 18/10/2024.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

当前存在的问题

ComponentWithComputed({
  computed: {
    a(data){
      return true
    },
    b(data){
      return data.a
    }
  }
})

键入 data. 之后并没有 a 属性

原因

当前泛型反推的是整个 TComputed 类型,而 TComputed 的值为 Record<string,xxx>,所以 computed 属性的 key 类型丢失了。

解决办法

把 TCompouted 改为 TComputedKey 反推定义的 key 值:

export const ComponentWithComputed = _ComponentWithComputed as <
	TData extends WechatMiniprogram.Component.DataOption,
	TProperty extends WechatMiniprogram.Component.PropertyOption,
	TMethod extends WechatMiniprogram.Component.MethodOption,
	TWatch extends Record<string, (...args: any[]) => void>,
	TBehavior extends WechatMiniprogram.Component.BehaviorOption,
	TComputedKey extends string,
	TCustomInstanceProperty extends
		WechatMiniprogram.IAnyObject = WechatMiniprogram.IAnyObject
>(
	options: ComputedOptions<
		TData,
		TProperty,
		TMethod,
		TWatch,
		TBehavior,
		TComputedKey,
		Record<
			TComputedKey,
			(
				data: TData & {
					[key in keyof TProperty]: TProperty[key] extends null
						? any
						: TProperty[key]
				} & { [key in TComputedKey] }
			) => any
		>,
		TCustomInstanceProperty
	>
) => string

image

Lenguaje dominante
TypeScript
Estrellas
696
Forks
61
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de wechat-miniprogram/computed

Todos los issues de wechat-miniprogram/computed

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.