小编Typ*_*aon的帖子

ts、useStorage (vueuse) 和 Pinia 的类型问题

我在以下代码中遇到奇怪的错误: Property 'length' does not exist on type '{ [RefSymbol]: true; }'.

但是当我检查 getCount 函数中的类型时,foo我的 IDE 告诉我它的类型Foo[]。我究竟做错了什么?

import { defineStore } from 'pinia';
import { useStorage } from '@vueuse/core';

interface Foo {}

export const useFooStore = defineStore('foo', {
  state: () => ({
    foo: useStorage('foo', [] as Foo[]),
  }),
  actions: {
    getCount() {
      return this.foo.length; //Here's the error
    },
  },
});

Run Code Online (Sandbox Code Playgroud)

local-storage typescript vue.js pinia

6
推荐指数
1
解决办法
2830
查看次数

使用 Koin 和 navArgs 在 childfragment 中获取共享视图模型

我有一个基本上只包含底部导航和视图模型的片段。该视图模型由该片段中的所有子片段共享。我的父片段看起来有点像这样:

class UserDetailFragment : Fragment() {

    private val args: UserDetailFragmentArgs by navArgs()
    private val userDetailViewModel: UserDetailViewModel by viewModel { parametersOf(args.user) }

    //standard code
    //onCreateActivity where I do some basic stuff like switching the fragments
}
Run Code Online (Sandbox Code Playgroud)

视图模型在 koin 中注册,如下所示:

val viewModelModule = module {
        /* other viewmodels */
        viewModel { (user: UserModel) -> UserDetailViewModel(get(), get(), user) }
    }

Run Code Online (Sandbox Code Playgroud)

然后我们有我试图这样定义的子片段:

class UserAlbumsFragment : Fragment() {

    private val userDetailViewModel: UserDetailViewModel by sharedViewModel() //THIS LINE ISN'T WORKING

    //standard code again
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的一行不起作用,我尝试将其写为:

private val …
Run Code Online (Sandbox Code Playgroud)

android viewmodel android-fragments koin

5
推荐指数
2
解决办法
6066
查看次数

如何在打字稿中映射一组对象

第一次尝试打字稿。

我有一个看起来像的物体

interface Job {
//... some data
    priority: number
}
Run Code Online (Sandbox Code Playgroud)

我想返回一组作业中的最高优先级(注意:不是作业本身,而是实际值)。所以很自然地我就尝试了:

// let jobs: Set<Job> = fetchJobs();
jobs.map((job) => job.priority).max()
// or
jobs.values().map((job) => job.priority).max()
Run Code Online (Sandbox Code Playgroud)

但它告诉我Uncaught TypeError: jobs.map is not a function

iterable typescript

5
推荐指数
1
解决办法
2915
查看次数

如何使用 Clap“展平”子命令

我的程序中有两种类型的命令,我想将其中一种类型分组到一个枚举中。我不希望用户必须输入额外的内容,所以我想在顶层公开这些命令。如何“扁平化”子命令?

目前我正在使用以下(简化的)代码

use clap::{Parser, Subcommand};

#[derive(Parser, Debug)]
pub struct Cli {
    #[command(subcommand)]
    pub command: Commands,
}


#[derive(Debug, Subcommand)]
#[non_exhaustive]
pub enum Commands {
    ChangeBrightness{ 
        #[command(subcommand)] 
        command: ChangeBrightnessCommand,
        #[arg(short, long)]
        devices: Vec<String>
    },
    List,
}

#[derive(Debug, Subcommand)]
pub enum ChangeBrightnessCommand {
    Set { 
        #[arg(value_parser = clap::value_parser!(u8).range(0..=100))] 
        percent: u8,
    },
    Get,
    // There are more (like increment, decrement, set-max, and set-min)
}

fn main() {
    let cli = Cli::parse();
    println!("{:?}", cli);
    match &cli.command {
        Commands::ChangeBrightness{command, devices} => todo!(),
        Commands::List => todo!()
    } …
Run Code Online (Sandbox Code Playgroud)

rust clap

5
推荐指数
0
解决办法
987
查看次数

Rust proc_macro_derive:如何检查字段是否属于基本类型,例如布尔值?

我正在尝试过滤掉结构体中类型为 的所有字段bool。但syn::Type枚举似乎没有案例,或者我错误地阅读了定义:

pub enum Type {
    Array(TypeArray),
    BareFn(TypeBareFn),
    Group(TypeGroup),
    ImplTrait(TypeImplTrait),
    Infer(TypeInfer),
    Macro(TypeMacro),
    Never(TypeNever),
    Paren(TypeParen),
    Path(TypePath),
    Ptr(TypePtr),
    Reference(TypeReference),
    Slice(TypeSlice),
    TraitObject(TypeTraitObject),
    Tuple(TypeTuple),
    Verbatim(TokenStream),
    // some variants omitted
}
Run Code Online (Sandbox Code Playgroud)

我查看了源syn::Types代码,以检查省略了哪些变体,但这并没有给我带来任何进一步的帮助。这是我到目前为止所拥有的:

#[proc_macro_derive(Creator)]
pub fn derive_creator(_item: TokenStream) -> TokenStream {
    let item = parse_macro_input!(_item as syn::DeriveInput);
    let item_ident = item.ident;

    let fields = if let syn::Data::Struct(syn::DataStruct {
        fields: syn::Fields::Named(syn::FieldsNamed { ref named, .. }),
        ..
    }) = item.data
    {
        named
    } else {
        panic!("You can derive Creator only on …
Run Code Online (Sandbox Code Playgroud)

rust rust-proc-macros

4
推荐指数
1
解决办法
1936
查看次数