我在以下代码中遇到奇怪的错误: 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) 我有一个基本上只包含底部导航和视图模型的片段。该视图模型由该片段中的所有子片段共享。我的父片段看起来有点像这样:
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) 第一次尝试打字稿。
我有一个看起来像的物体
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
我的程序中有两种类型的命令,我想将其中一种类型分组到一个枚举中。我不希望用户必须输入额外的内容,所以我想在顶层公开这些命令。如何“扁平化”子命令?
目前我正在使用以下(简化的)代码
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) 我正在尝试过滤掉结构体中类型为 的所有字段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)