标签: nullability

如何将 TypeScript 的索引访问类型与可为 null 的嵌套类型结合使用?

我正在尝试根据另一种类型定义 TypeScript 类型。

这有效:

type Result = { data: { nestedData: { foo: string; bar: string } } };

type NestedData = Result['data']['nestedData'];
Run Code Online (Sandbox Code Playgroud)

但是,当data属性可为空时,这不起作用:

type Result = { data: { nestedData: { foo: string; bar: string } } | null };

type NestedData = Result['data']['nestedData'];
Run Code Online (Sandbox Code Playgroud)

并导致错误:

type Result = { data: { nestedData: { foo: string; bar: string } } };

type NestedData = Result['data']['nestedData'];
Run Code Online (Sandbox Code Playgroud)

如何根据 定义我的NestedData类型,而不重复 的类型Result的任何部分?Result

TypeScript Playground 上的演示

编辑:我NestedData …

typescript nullability

9
推荐指数
1
解决办法
1409
查看次数

Kotlin checkNotNull 与 requireNotNull

当我在 Kotlin 中学习新组件时,我遇到了requireNotNullcheckNotNull但我发现的唯一区别是requireNotNull可以抛出一段IllegalArgumentException时间checkNotNull可以抛出一个IllegalStateException. 这是有两种方法的唯一原因,还是我缺少一些底层实现细节?

nullable kotlin nullability

6
推荐指数
2
解决办法
150
查看次数

如何解决错误“NotNullWhen 属性由于其保护级别而无法访问”

我有以下扩展方法,我正在尝试用属性装饰out参数 ( T value) NotNullWhen。但是,它显示错误“NotNullWhen 属性由于其保护级别而无法访问”,我不知道为什么?

    using System;
    using System.Collections.Generic;
    using System.Diagnostics.CodeAnalysis;

    internal static class Extensions
    {
        public static bool TryGetValueForAssignableType<T>(this IDictionary<Type, T> dictionary, Type key, [NotNullWhen(true)] out T value)
        {
            value = default;

            foreach (var pair in dictionary)
            {
                if (pair.Key.IsAssignableFrom(key))
                {
                    value = pair.Value;
                    return true;
                }
            }

            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我尝试将类访问修饰符更改为public无效。我还nullable为类库启用了C# 8上下文。

知道如何解决这个问题吗?

编辑:

我只是尝试使用上面的扩展类创建一个新的类库。现在它显示“找不到命名空间名称'NotNullWhen'的类型(您是否缺少 using 指令或程序集引用)”。我已经包括了using System.Diagnostics.CodeAnalysis;哪个是灰色的。项目文件包含以下内容:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <Nullable>enable</Nullable>
    <LangVersion>8.0</LangVersion> …
Run Code Online (Sandbox Code Playgroud)

c# nullability

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

标签 统计

nullability ×3

c# ×1

kotlin ×1

nullable ×1

typescript ×1